Sadly, I'm extremely bad with writing as well as almost any another art. I couldn't even make a decent, good looking house when I tried to play Sims long ago :D
But if you need help with pics and packs (searching, not drawing), count me in.
Of course, there're cute enemies as well. But you don't expect to meet only naked girls in Dark Deep Dungeon of Undead :)
(http://s002.youpic.su/pictures/1356642000/thumb_250a5266888d3dce56eab263080a6190.jpg) (http://youpic.su/view.php?id=s002.youpic.su/pictures/1356642000/250a5266888d3dce56eab263080a6190.jpg)
All enemies are here (https://dl.dropbox.com/u/79429937/pic1.7z).
Here (https://dl.dropbox.com/u/79429937/Pics.7z) some weapons, potions and accessorizes. Game mechanics mostly doesn't use armor, I'll look for it somewhere else.
And I'm not sure what do you mean by advertisement pictures. Girls give brothel's leaflets to people on streets?
I could really use a couple of people to help me out with texts for PyTFall. If you don't like writing but like hunting for pics and/or making packs, some help is needed in those areas as well.
Let me know if you're interested.
Maybe some just some nice looking girls talking to the crowd or giving out any sort of leaflets. I tried but gave up on it...I'll do my best.
If you can give me examples (aka a dummy Trait or two) I will try my hand at it.
I have mostly forgotten how SimBr 1x was and played so I will look that up later, before thinking about meeting scripts - also do you already have a collection of pictures for your girls, if so it would help to have a list of names and (if you want them to act accordingly) the series/manga.
Hey, I know I kinda bailed on you before, but RL interfered in the form of finals and family. I apologize for my sudden exit, but, if you want, I can help you with writing. I'm not the best writer, but I'm not the worst either. So, I'd be interested.
I've found (https://dl.dropbox.com/u/79429937/flyers.7z) a couple of more or less "advertising" pics. It's been a long time, so I don't remember all those great sites I've used before. If I'll find them again, there will be more.
Great! Well, first thing: Download the current version of PytFall and read the script in Tifa's folder, see if you have any questions and how much of it do you understand?
Now that's a bit difficult. I'll see what I can do.
Take a look at this (https://dl.dropbox.com/u/79429937/flyers1.7z) in the meantime, perhaps you'll find something useful.
I'm sorry, I am really out of the loop. Where can I find the latest version?
I downloaded Pytfall to see what kind of writing was needed, but I see that a when I put it through my unzipper it's telling me that it's a locked archive and I need a password.
Is there something basic I'm missing here?
So I played around with PyTFall a bit to get a feel for the game and found a few things in the next day thing that could be written better.
Here is a googledoc (https://docs.google.com/document/d/1QPCt-56J_6J4Sab6bOciSJboI0vg4zUqdYlkn_r8Mgo/edit) with a few suggestions from me - I am sure some of these are pretty bad as I didn't check them again and I am a pretty tired today.
(there shouldn't be the need for a google account to comment if I didn't screw up.)
a small bug i found: the buy girl screen doesn't show the correct day.
bigger bug: it seems like resting a girl dooesn't work ( or am I doing something wrong?)
I tried working on traits yesterday after I came back from a party but I didn't have the heart looking into that document yet.
I am truly sorry, Xela, but I am pretty sure that this level of code-writing is far beyond my abilities. I apologize for wasting your time.
Resting should work fine? I am not sure what the problem is there.If I set a girl to rest, the 'Fatigue' counter goes up instead of down, regardless of items on her, garden or bar attachment of the brothel.
Your texts are a lot better than mine!Thanks but I think some are a bit... 'cheesy' for a lack of a better word.
Peasants, Beggars, Merchants and so on are variations of costumer's 'Caste'. Girls will have ranks to match those castes. If costumers caste is lower than girl's rank, she may refuse him. That will be coded in later. The kind of costumers that visit the brothel is determined by brothel's reputation.
If I set a girl to rest, the 'Fatigue' counter goes up instead of down, regardless of items on her, garden or bar attachment of the brothel.
Also it would be nice if you could get to the jobs of a girl easier than now.
def whore(self, char, girl, hero):
img = None # Image category displayed to player.
txt = '' # Variable to contain all texts of events
evtlist = [] # List of events to be appended to global
chr = char[girl] # Variable refering to specific girl we're dealing with
client = Customer(self.rep,self.fame) # Client is created here. His stats are based of brothel's stats (reputation and fame)
chr.AP -= 1 # First thing we do is decreasing our girl's Action Points by one, if her AP is 0 or below, game would not run this function
if chr.health < 60: # First thing we check for is her health, if below 60, her injuries will not allow her to work
ilists.WhrsinBrtlList.remove(chr.id) # This removes her brothel whoring for the rest of the day
txt = txt + "This girl is injured and is in need of medical attention" # We add this text to variable txt we declared ealier
img = 'profile' # We provide picture category, I would like this to be rest in the future
ident = os.urandom(8) # This is a precaucion. We make sure that there is a no way in hell we get two of the same enteries in one list by generating a random from 8 unicode characters.
evtlist.append(self.id) # Appending brothel id, we can sort by brothels on next day list in the future
evtlist.append(chr) # We append girl herself
evtlist.append(img) # Adding image category to the list
evtlist.append(txt) # Adding text
evtlist.append(ident) # and finally adding the unique ID
NextDayList.append(evtlist) # This is the very last thing that we do, NextDayList is the only Global variable we have in the game at this point. It will contain all info Next day needs to show us.
return # Breaking out of this method, since she cannot work due to injury, rest of this method is useless.
if chr.fatigue > 260: # Same thing for fatique, if she is in good health but very tired, we remove do not allow her to whore this day
ilists.WhrsinBrtlList.remove(chr.id)
txt = txt + "This girl is to tired to move, let along fuck someone (something)"
img = 'profile'
ident = os.urandom(8)
evtlist.append(self.id)
evtlist.append(chr)
evtlist.append(img)
evtlist.append(txt)
evtlist.append(ident)
NextDayList.append(evtlist)
return
txt = txt + '%s came into %s and requested %s for a sweet act of %s. \n'%(client.caste, self.name, chr.name, client.act)
# Ok, if we got this far, she is both, healthy and energetic. Code above adds first line to interactions text. %s means we insert something into the next, here we insernt: Caste of the client, Name of the brothel, Name of the charecter, Act he/she requested.
if client.act == 'sex':
txt = txt + random.choice(['They had a really good time!\n',
'He looked at her hungerly, then rushed towards her. Her pussy felt like heaven to him!'])
# Random choice will pick one of the options for the list, basically random.choice() method, picking one of the options from a list ['They.....', 'He.....', 'Bla bla bla and so on']
chr.mod('normalsex', +2) # adding 2 to sex stat, chr.mod method will insure that stat remains within Max and Min of the stat, if we just used chr.normalsex += 2 we could go above Max value (100 by default)
chr.mod('constitution', +2) # same for constitution
chr.mod('fatigue', +20)
hero.add_money(client.cash) # giving main player clients money, this whole 'whore' method is raw so right now hero gets whatever costumer comes with.
repmodify = random.randint(1,3) # Just creating a variable with a value between 1 to 3.
self.modrep(repmodify) # Modding brothels reputation, since this is the method of brothel class, self refers to whatever brothel we're in.
txt = txt + "He paid her %s of gold. Brothel's reputation increased by %s\n"%(client.cash,repmodify) # More text, by the way \n means that next text we append will start from a new line
txt = txt + 'Her Sex and Constitution went up!\n'
img = 'sex' # Picking the image again
if client.act == 'anal': # Client wants anal
txt = txt + random.choice(['He pushed towards the bed and took her in the butt like there is no tomorrow!\n',
'They had a really good time!\n'])
chr.mod('anal', +2)
chr.mod('constitution', +2)
chr.mod('fatigue', +20)
hero.add_money(client.cash)
repmodify = random.randint(1,3)
self.modrep(repmodify)
txt = txt + "He paid her %s of gold. Brothel's reputation increased by %s\n"%(client.cash,repmodify)
txt = txt + 'Her Anal and Constitution went up!\n'
img = 'anal'
if client.act == 'blowjob':
txt = txt + random.choice(['They had a really good time!\n',
'He slapped her face with his cock little bit and then shoved it all the way into her throat!\n'])
chr.mod('blowjob', +2)
chr.mod('constitution', +2)
chr.mod('fatigue', +20)
hero.add_money(client.cash)
repmodify = random.randint(1,3)
self.modrep(repmodify)
txt = txt + "He paid her %s of gold. Brothel's reputation increase by %s\n"%(client.cash,repmodify)
txt = txt + 'Her Blowjob and Constitution went up!\n'
img = 'blowjob'
if client.act == 'lesbian':
txt = txt + random.choice(['They had a really good time!\n',
"She 'ate' her pussy out!\n"])
chr.mod('lesbian', +2)
chr.mod('constitution', +2)
chr.mod('fatigue', +20)
hero.add_money(client.cash)
repmodify = random.randint(1,3)
self.modrep(repmodify)
txt = txt + "She paid her %s of gold. Brothel's reputation increased by %s\n"%(client.cash,repmodify)
txt = txt + 'Her Lesbian and Constitution went up!\n'
img = 'les'
ident = os.urandom(8)
evtlist.append(self.id)
evtlist.append(chr)
evtlist.append(img)
evtlist.append(txt)
evtlist.append(ident)
NextDayList.append(evtlist)
def rest(self,char,girl):
img = None
txt = '' # String of events
evtlist = [] # list of events to be appended to global
chr = char[girl]
hmodify = random.randint(8, 12)
fmodify = random.randint(140, 160)
mmodify = random.randint(4, 8)
chr.mod('fatigue', fmodify)
chr.mod('health', hmodify)
txt = txt + random.choice(['%s took a break today. She recovered %s of health and lost %s of fatigue'%(chr.name,hmodify,fmodify),
'She spent the day relaxing. Resting from daily tasks allowed %s to recover %s health and get rid of %s fatigue'%(chr.name,hmodify,fmodify),
'%s comfortably rested in her room recovering %s health, %s MP and loosing %s of fatigue'%(chr.name,hmodify,mmodify,fmodify)])
img = 'profile'
ident = os.urandom(8)
evtlist.append(self.id)
evtlist.append(chr)
evtlist.append(img)
evtlist.append(txt)
evtlist.append(ident)
NextDayList.append(evtlist)
By the way, see if you can figure out any of the actual code, cause if you can it would be easier just to send you the dev version so you can edit/add texts yourself.
I can write lines, but someone else will have to insert. Truly, my inexperience knows few bounds.
Anyway, where do you want me to start?
Seems reasonable enough as long as I don't have to write actual logic and can just add strings.
Just a warning though: I have no experience with python, never looked into it at all.
Sounds good! I'll get working on the intro!
How long do you want the intro to be? Also, what are any relevant names, like the name of the city, or anything else that's absolutely necessary for an intro?
Okay, sounds good!
Some more (https://dl.dropbox.com/u/79429937/somemore.7z) kinda advertisement pics and a couple of armor icons lists. To find more specific pics for advertisement I'm going to look through all game-related galleries on e-hentai, and that will take some time.
Well, you asked for a "lord entering building". Let's pretend there is a lord, and we are looking via his eyes :D
I wounder if cheerleader pictures can be used for advertising too. There're a lot of them everywhere.
self.wranks = dict(
r1 = dict(id = 1, name = 'Rank 1: Kirimise (Almost beggar)', price = 0),
r2 = dict(id = 2, name = "Rank 2: Heya-Mochi (Low-class prostitute)", price = 100, ref = 30, exp = 1000),
r3 = dict(id = 3, name = "Rank 3: Zashiki-Mochi (Middle-class Prostitute)", price = 400, ref = 45, exp = 2500),
r4 = dict(id = 4, name = "Rank 4: Tsuke-Mawashi (Courtesan)", price = 1000, ref = 60, exp = 5000),
r5 = dict(id = 5, name = "Rank 5: Chûsan (Famous)", price = 2000, ref = 75, exp = 10000),
r6 = dict(id = 6, name = "Rank 6: Yobidashi (High-Class Courtesan)", price = 5000, ref = 90, exp = 20000),
r7 = dict(id = 7, name = "Rank 7: Koshi (Nation famous)", price = 10000, ref = 100, exp = 40000),
r8 = dict(id = 8, name = "Rank 8: Tayu (Legendary)", price = 30000, ref = 130, exp = 100000)
)
1 advertising and some armor from various games. (https://dl.dropbox.com/u/79429937/1.7z)
<girl
id="Hinata"
folder="naruto"
name="Hinata Hyuuga"
desc="Kunoichi from Naruto series"
charisma="30"
refinement="14"
libido="30"
constitution="30"
exp="0"
joy="30"
character="25"
reputation="0"
health="100"
attack = '16'
magic = '10'
defence = '17'
agility = '15'
mp = '20'
anal="0"
normalsex="3"
blowjob="1"
lesbian="0"
occupation="prostitute"
location="slavemarket"
status="slave">
<bskill name = "FistAttack"/>
<mskill name = "Water 1"/>
<trait name="meek" />
</girl>
I played around some more and have begun manipulating the scripts a bit, haven't added anything new yet, but changed a few things.
While I was testing those changes, I found a minor thing: the advertisement you only have to pay for once (the sign) is still clickable after you bought it. As long as you don't implement a feature where customers, that you couldn't serve, have a negative impact on your brothel I don't see any reason to still have the button pressable.
A thing I also did was reducing the text size in the girlprofile screen - it is more comfortable (to me at least) to see most of the stats without scrolling in the window.
I also changed the order in which the stats are listed a bit. (I put Health and Fatigue at the top of the list because those are probably going to be the most variable ones.)
I am not sure how you want to handle implementing changes from me into your versions so I am just going to link you my modified files in a PM.
Some cloth icons. (https://dl.dropbox.com/u/79429937/clothes_icons.jpg)
About girls packs, could you be more specific with images categories and their names?
Should images names start with a small letter, i.e. "profile 0" but not "Profile 0"?
And what about "occupation" thing in xml?
I see. Well, in the first place I'll convert my wm ex packs.
It's a shame that Future's packs are inaccessible anymore, I really liked them. I wonder if someone still has backups.
I'll try to upload them, if anyone wants, along with WM EX itself.I would appreciate that.
Had a surge of creativity and used it partially to work on my projects for PyTFall:
I finished the first draft (https://docs.google.com/document/d/1YUOTNf4jyZnnz1-UOGXD8Wlj57HCgmZuc9gUM0i9F9E/edit) of a few Traits, fleshed out an idea for a meetscript and put together a girl (https://docs.google.com/open?id=0B1reSH_aYDBvazVMdHZSX2RQNGc) (Pass: whoremaster) out of pics for a WM girl that I had not finished.
That is it for today, time to sleep.
I have converted Aegis pack (https://dl.dropbox.com/u/79429937/persona3.7z), same password. I'm not sure what to do with ecchi and combat categories, so I just leave them alone for now. I'm also not sure about quest category, since in your Tifa pack there're two quest categories names, "quest1 0" and "quest2 0".
Let me know if I've made any mistakes.
Oh, and I've used "ai" occupation :)
Damn it, totally forgot to remove background after resizing. Here it is, all is done. (https://dl.dropbox.com/u/79429937/aegis.7z)
Now if I'll convert the rest of mine and Future's (if someone will upload them) persona characters, it will be close to ten.
Btw, if I understand correctly, when we have several characters from the same game/anime/etc., then we must use one data.xml for all of them. It means that character installation is not as user friendly as in vanilla wm, since players must either manually edit xml for each added character, or just install the whole pack with premade xml even if they only want a couple of characters.
Didn't manage to get much done since last time but I added two more Traits to my doc (https://docs.google.com/document/d/1-wJ0U_WZ8z6pSMHeyTpY60a06eB-HcSJyGegWRQ9vbc/edit).
If you have any ideas/comments regarding new traits or the ones in the doc don't hesitate to add a comment to it.
I have pretty much scrapped my idea for a meet script but I would be happy to help people working on scripts for characters as my time permits.
Implementation of scripts seems to be almost impossible at the moment though.
Things that would be nice to have (explained):
-checking for set flags
-deducting and adding money (with checks how much money is actually avaible?)
-a function for adding the girl that adds the girl to the players workforce (since the example script goes off into battle I have no idea how that works)Not entirely sure what's stopping you from checking battle script, it's simply one more label with same rules as all others. activedemo.rpy is the file.
A way to manipulate a girls stats depending on the choices you choose to acquire her. (If you persuade her to work for you she should be more willing and happy than if you enslave her with the help of law enforcement because she owes you money.)
Four more (https://dl.dropbox.com/u/79429937/persona4.7z) characters from persona4.
Do you need more packs, or it would be better to continue to look for advertising pictures?
textbutton "Fuck" action Return(['act','fuck']) minimum(250,30)
while true:
result = ui.interact()
if result[0] == 'act':
jump('interact_%s'%result[1]) #will jump to whatever the first index of user interaction with game will be.
label interact_fuck:
"I'm really not sure about this... "
"I guess if you really want to, it's ok... right? "
$ginterimg = chr.img('sex',resize=(int(config.screen_width*0.794),int(config.screen_height*0.802)), force=false, mode = 'return')
"She did show quite a bit of skill today... maybe she deserves some praise as well? "
$jump('girl_interactions')
if chr.charisma > 50:
"Do this"
elif chr.charisma < 30: #elif stands for else if...
"Do something else"
else:
"Do some crazy third thing"
Four advertising pictures. (https://dl.dropbox.com/u/79429937/adv.7z) If you need even more then I'm afraid we have no choice but to use random cheerleaders and pictures with girls holding microphones (and most likely singing) on stages.
4) Girls and Costumers will refuse to deal with one another if their ranks/castes are to far apart, code for that is about 50% done and will definitely be finished tomorrow.
Hi everyone I'm here to help for the graphic side
hi Xela (I'm sorry if I repeat myself)
if you tell me the size of the images for objects, clothes, enemies etc.
and style: pixel or illustration
I'll start working on it as soon as possible
Hi guys! With Xela's permission, I'm also here for help with the project. For this moment, I can't offer much more then collecting and editing pictures, but I'm dedicating myself to learn how to do scripts in RenPy and looking forward to make some events soon.
Can this be used as a suggestion thread too? There's quite few things that I'm interested about if there's any plans for them or not.
ok i will start immediately with the GUI
I love this project and I will do my best ;)
We need pictures for interesting locations in the city.Could you provide some information about the world history then? Is it strictly medieval, or steampunk, or postapocalypse, or something like in Otherworld, etc.
Could you provide some information about the world history then? Is it strictly medieval, or steampunk, or postapocalypse, or something like in Otherworld, etc.
Hi Xela
I have a few questions if you don't mind
1. First of all, should I ask these questions here with PM or post them on forum?
2. I looked for pictures that you ask me to, but I must admit that I'm not really sure what some of these categories are supposed to mean. Like where they will be actually used and how much often (so I will not be wasting efforts on a lot images for category that are rarely seen where its better to use just the most accurate one). Few examples what I'm unsure about:
- is profilenormal same as profile (show in brothel screen) or is it something only used when meeting girls?
- there are two types of nude pics on net - one where girl is nude, but otherwise normal (=standing, doing something common) and the other type where she is undressed in bed or showing herself or spreading etc. (=sexy ones, just before action...)
- what degree of anger/sadness is better? Is she supposed to be just a little upset about something, or is complete "battle rage" or "down in tears" better?
The idea behind this is that when I'm in actual "Development" I want to put a little more efford into this than if it would be just a another girlpack - these will be probably presented with the game afterall.
I uploaded some Sakura pictures so you can tell me what is good and what is not accurate and I will use that example for all future girls - for now I'm collecting for Hinata and one other girl for general testing (like you wanted) and then I want to make my own one and try writing events for her.
3. That comes with another thing - you wanted only some categories of images that you're testing now, but when I'm at it, the're is almost no difference if I'm looking for just something or taking all that's useable from site where I am. So I will do so (and most of WM packs can be improved, trust me) but I need a list of all image categories in use now (or planned) - with all of these WM versions, I'm confused a bit.
But that comes with another issue - adding sex pics enlarge size of these girls a lot, and if I upload them to dropbox, it can take a lot of precious space away. Is that no issue, or should I use some sort or placeholders and store them separatedly? (nice solution, but there will be nothing to look at through development )
4. I want to normalize size of these images to save space and memory, do you know what size/resolution/ratio is best? (but i can figure that myself)
5. You mentioned Simbro1x girl meeting style - that version have predefined standard actions that you can perform with a girl, like chat, give gift... is it's still viable for me to write a specific story for a girl with its own different options and splits? Something thats goes through more meetings in style more like current tifa quest - will that work together?
6. And mentioning Simbro1x, there is something about this version I'm really interested about - customers chosing girls by their character or appereance. Is there any plans of implementing that in this project? I actually wrote a quite agitating wall of text about this (located at my folder now) but if you already discarted that idea, just ignore my suggestion.
X. And at last, is this ok with you to read message this long and explaining? I found that some people are uncomfortable if they are forced to read anything more then is absolutly necessary - so if your time is really precious, i will try my best to shorten any futher messaging to required minimum. Anyway, I'm hoping there will be no need for many questions like these and I will become more of a help then a nuisance soon.
Ok, thank you
So you want there to be both "profile" and "profileneutral" categories together? That is the part I was confused about, I somewhat assumed that they were one. But I can see now that it's better to have them separated. However, because they're so close, it's easy to be left with picture that you (girlpack creator) want to have in both - very easy, because lot of emotional pictures will get filtered into happy/sad/anger categories, so almost everything left in "profile" after sorting will be pictures with normal expression (=good for both). It can be solved easily by duplicating that picture, but I was wondering...
Can it be scripted that the game will be choosing picture from more picture types then one? Because, for example, if all screens that were previously using "profile" pictures will now use "profile + profileneutral" pictures, while emotion screen will just use "profileneutral" pictures (even better "neutral">"profileneutral">"profile" to have every possibility) that would solve it more elegantly.
(a very minor issue, I know, just using it to better understand how it all work)
Perfect, i will check immediately the wood skin ;D
just one question:
of my old GUI concept I particularly like the screen of the daily report :
(http://img541.imageshack.us/img541/9607/breport.jpg) (http://imageshack.us/photo/my-images/541/breport.jpg/)
the way it works is simple:
clicking on the images you can see the results of girls divided by brothel and for every girl by clicking scroll through the customers of the evening displaying in the center the image result
(sorry if my English is not so good, but I hope it is understandable)
do you think that you can use it in the game?
I know that maybe program it now is a waste of time
but I think it simplifies user navigation
and I just wondering to know if it is possible to implement it in the future
I was thinking about some form of a failed slave revolt taking place in the country that was squashed but with very significant losses so now slaves are not allowed to train in battle magic or combatSo we talk about postwar world after all? :)
So we talk about postwar world after all? :)
(http://s002.youpic.su/pictures/1358542800/thumb_dc39184791e777eb49fe656066a97bfd.jpg) (http://youpic.su/view.php?id=s002.youpic.su/pictures/1358542800/dc39184791e777eb49fe656066a97bfd.jpg)
Here (https://dl.dropbox.com/u/79429937/city1.7z) some general pics. Let me know if you need more specific images.
def getcityGirlsList(self, char):
self.cityGirlsList = []
for entry in char:
if char[entry].get('location') == 'city':
self.cityGirlsList.append(entry)
def getGMLists(self, char, day):
if self.gml_reshuffle == day:
self.getcityGirlsList(char)
self.ParkGatesList = []
while len(self.cityGirlsList) > 0:
for entry in self.cityGirlsList:
if len(self.ParkGatesList) < 3:
self.ParkGatesList.append(self.cityGirlsList.pop(random.randrange(len(self.cityGirlsList))))
else:
break
break
if self.gml_reshuffle == day:
self.gml_reshuffle = day + random.randint(5,7)
Oops :D
And don't nuke PyTFall, you forgot to rename profile pics for Aegis and that broke it today once already :)
Oops :D
Well, when I made packs for wm ex I tested each of them in game before uploading to avoid any mistakes. When we'll have more or less stable and working version of PyTFall I can do the same.
So, just a kind of important thing:
In my folder (nighthalkex), inside the shared folder PyTFall, there is a Hinata folder that I just updated. I put some new pics that I found but the important part is that I created a few new categories. I did that for the action Go Out, in the interaction menu. There were no pics for those, so I had to find them and create those categories. I am just posting this here so the guys doing girl packs or hunting for picks could know what to look for and what to name them.
So, the new categories are:
date
datebeach
ent
shop
That is all ;D
I put the layout of some screens in the dropbox folder let me know if they fit ;)
when I'm done with the layouts I'll start working on real graphics
for now I'm thinking of keeping a skin of wood, parchment and metal
any advice is welcome
it’s hard to imagine that this Naruto here is supposed to be you. Ideal would be pictures with only girl looking like she is with someone or where guy can’t be easily seen or recognized, but these are much harder to find...I guess we can use profilehappy pics, or maybe pics with girl standing or walking somewhere on the street. Anything but Naruto :)
Hey guys,
just wanted to say hello. I'll try to contribute something useful to this project on the Python side of things :-)
Greets,
rudi
Finally got around to getting my Dropbox set up correctly and am downloading the shared folder as I type this, I will probably take a look later after I worked a bit on other stuff.
One thing that I mulled a bit the last few days is if the player character should be vocalised at all.
It is easier for people to think it is them doing decisions if you don't actually put words in their mouth, so that they can imagine that they are speaking in a specific slang.
There is also the problem how different modders will write the dialogue for the player - preventing that the player will switch personality when he speaks with two different girls.
I personally would prefer to write/read 'You explain that you are <playername> a local businessman in the entertainment sector' than a lengthy dialog (but maybe I would do that because I suck at writing dialogs).
Anyway, this is just what I think about it and if you want to have the character speak that is doable too although you would probably need a character description to keep the dialog relatively consistent.
:)
Welcome to the forum and project!
PS: Rudi works on porting Otherworld to Python, we've met on Otherworld forum before it got nuked by viruses. He is a more skilled programmer than me so depending on time both of us have to spend coding for the project, it just might go a lot faster!
There is also the problem how different modders will write the dialogue for the player - preventing that the player will switch personality when he speaks with two different girls.In slavemaker, for example, main character's personality theoretically bases on his/her background, traits and so on. This is tremendous amount of work, but modders will be able to write it's own dialogue for each background or traits set if PytFall will use the similar system.
In slavemaker, for example, main character's personality theoretically bases on his/her background, traits and so on. This is tremendous amount of work, but modders will be able to write it's own dialogue for each background or traits set if PytFall will use the similar system.
A girl has a charisma attribute. Minimum value is 0, maximum value is 100. Currently her charisma is 90.You probably should use two variables for each stat, one for the base value and one for the actual value shown to player, i.e. base value + equipment effects limited by 100.
Now she puts on a nice dress (charisma + 20). The current implementation recognizes that this would raise charisma above maximum and limits the value to 100.
Next, she takes off the dress. The current implementation drops her charisma by 20, leaving her 10 charisma short of where she started.
Suggestions?
Hey guys,
I looked at Items and their effects today and noticed a problem.
Consider this scenario:
A girl has a charisma attribute. Minimum value is 0, maximum value is 100. Currently her charisma is 90.
Now she puts on a nice dress (charisma + 20). The current implementation recognizes that this would raise charisma above maximum and limits the value to 100.
Next, she takes off the dress. The current implementation drops her charisma by 20, leaving her 10 charisma short of where she started.
Suggestions?
I'd say, Xela, it's too early to worry about it then, just like it's too early to create girls packs.
Either modders could use dialogues presets if you feel like adding MC's backgrounds or some others MC-related flags, or rpg-like well-branched dialogues if you don't.
Branched dialogues are supported, aren't they?
You probably should use two variables for each stat, one for the base value and one for the actual value shown to player, i.e. base value + equipment effects.
Hmm... wouldn't it also work if you simply counted the stat higher but if the stat was larger than the max you only give out max?
Should even work if you increased max at a later point.
Not sure how permanent increases to a stat would work in the long run though - you still would need a check to make sure you don't exceed the maximum the variable can hold (if that is applicable in Python).
Edit: (I have only limited knowledge of the codebase and don't know Python ignore my possible ignorance)
No, what I sent you does not solve this problem, writing that lead me to find this problem ;-)
However, I can definitely solve this problem if we can decide how it should be solved.
Well, night is already writing some interactions and CW will prolly soon start as well so it not that early...Excuse me, but I thought we talk about modders, not members of PyTFall dev team itself ;)
Excuse me, but I thought we talk about modders, not members of PyTFall dev team itself ;)
Alright, so I thought about what code I could write for PyTFall. There are lots of possibilities and most of them involve me designing how parts of the game will work. I'm not sure that's a good thing, as somebody else might want to do it differently. Therefore, we either should have a discussion previously or somebody with the authority to do that should decide how that particular feature should be implemented. Let me give you an example: Brothels
Should they provide jobs and stat bonuses to inhabitants like in SlaveMaker?
Should their properties be decided by the rooms they encompass like in Otherworld? Should they even have rooms?
Should they influence available customers, like in sibr1x (I think...)?
Can the player own more than one? Run more than one?
Not everything can be set in stone at this point, but some decisions will be necessary.
How many slaves can the player own? Many slaves means lots of work for the player, so managing each one of them should be simple (think WM here). Few slaves means lots of playertime for every one of them, so managing them can be quite involved (as it is in SlaveMaker).
Many slaves means multiple houses can be useful. Few slaves mean a single house at any given time will be sufficient.
We could add a simple design document into the Dropbox, so each of us can edit it. A .doc file (not .docx!) would be a good choice, as most people will be able to edit it and pictures can be included if artists want to sketch GUI layouts or similar stuff. In this document, we could collect ideas and develop a common vision for this game.
To get started, we could talk about a very interesting question: At this point, what would be the most fun, interesting or sexy new feature/improvement to the game (in your opinion)?
First thing I would like to ask is that you try to dumb down code to my level.Concerning inheritance:
I would like to avoid having to go through documentationYou think my badly written code is easier to understand than the official Python docs? If I don't use what Python has to offer, I have to code the same functionality myself, reinventing the wheel. Usually, the fastest and easiest way to solve a problem in Python is to look up the solution in the docs or on stackoverflow. That's also the easiest way to learn the language, IMHO. I do it all the time.
I started the project to have something I can understand and advanceI can understand that. However, I don't think you are doing yourself, or your project, any favors by wanting to implement everything "by hand". Nevertheless, I will only use standard library objects for future PyTFall code.
take a look at what's already there. [...] Also was addressed somewhereYou know, I spent 3 hours reading when I quickly scanned through this thread my first time around here and obviously I missed quite a lot. I also played the game a little bit. Despite that, it is really hard for me to tell which of the parts that are already there are only makeshift solutions meant to be replaced and which are established concepts that should be kept and expanded upon.
Please lets not do thatAlright, as far as I'm concerned, that's entirely your call.
Choose what you want to code, like brothels, ask here what that is supposed to be like in generalI'm interested in customers. What do you have in mind for them? They have a social class. What else? Do different locations have different frequencies of particular customer types?
I'm interested in customers. What do you have in mind for them? They have a social class. What else? Do different locations have different frequencies of particular customer types?
Of course I am willing to explain my code, but so far, you did not ask any direct questions about it ;)
EDIT: I added specifications for customer code to my dropbox folder. Please review it and decide if you want a common base class for characters or not.
Ideas plz:
This is from SimBro 1x:
Menu:
Chat: Interests, Hang outs, Shopping, Romance
Insult: Dumb, Boring, Ugly, Slut
Give Money: 25, 50, 75, 100
Touch: Hug, Hold Hand, Slap Butt, Grab Breast
Play Game: 5 Questions, Find Something, ?, ? Doesn't work
Compliment: Clever, Smart, Cute, Breast
Joke: Kids, Adult, Sex, Gross
Give Gift: A lineup of items, can be substituted with take shopping or we'll just add items.
Kiss: Hand, Forehead, Cheek, Mouth
Proposition: Friends, Girlfriend, Sex, Hire
All and all, I think we need 'Subdue' (Starts a battle scenario and maybe some events like someone coming to her rescue), 'Date' (Scenario with background switch), maybe some form of 'Special'?
I would like something more original than plainly ripping the whole thing off SimBro 1x. Any ideas?
I am going to get some sleep...
Since you ask about missing parts, you might want to take a look at Popuri's interactions mod (http://pinkpetal.org/index.php?topic=907.0). It has some interesting ideas, like nice/not nice dates, punishments and so on.
About all of these dating options – because there was already some thoughts about player personal relationship with his whores, maybe it will be a good idea to separate those two – how much she likes you, and how much is she convinced to work as a whore.Thus, even if she doesn't want to be a whore, she still can work for you at some neutral jobs, like waitress.
Thus, even if she doesn't want to be a whore, she still can work for you at some neutral jobs, like waitress.
Suggestion time!
Number of girls:
I think we need to avoid both extremes
– with very small number (like up to 10) it will tend to have too much micromanagement and generally plays more like rpg, and that general feeling is more like a harem then being a boos that runs his brothel establishment
– with very large number (100+) , game will need too much simplification to avoid being overwhelming for player to manage, and with reduced importance that single girl will have, impact of any work invested into girls individualities, traits, meeting system or events will be lessened too...
so I suggest game to be balanced somewhere about 40 girls working
I really liked simbro1x system in that matter; there was a weekly plan of actions for every girl that repeated itself, so with a bit of careful planning all that was needed was to set it once, and then the whole building pretty much runs on auto, allowing this “set and forget” playstyle where number of girls never becomes an issue... and gives player time for all those fun things like making movies, looking for new girls, doing missions...
btw. Xela, you don’t plan fetishes, but still want clients to have traits? I’m sorry, but I don’t see a real difference if a customer can have trait “big dick” or if he can have trait “likes blondes”
interaction menu:
I like the idea to be able to just rewrite the lines in interaction menu, thus making the girl unique, as easy variant to setting a fully customized event.
And for that we need lines that are replaceable, something simple like introduction, what are you doing, how are you... what can be banal “I’m fine” in vanilla, can become something more interesting “I’m another step closer to conquer the world!” or “I’m just thinking about testing my new “Starlight Breaker” move on someone, will you stay still for a bit?” when customized – I like that
...but on a second thought, it’s probably easy to customize text on these buttons too, so there’s no need to have them (you know, like Chat>interest to Boast>Show her your mad skillz! option)
Yes, your right, I totally forgot about these... And I actually used this type of jobs alot...
What I wrote doesn't make that much sense now, because girls that want to work for you, but don't have any kind of relationship with you are those appearing in standard "buy me” menu, so there is no need to simulate that kind of situation in interaction menu...
sorry :-( overthinking something again...
Thus, even if she doesn't want to be a whore, she still can work for you at some neutral jobs, like waitress.
So warriors will never agree to whore then, regardless of any circumstances?
sorry... I was under impression that there will be some sort of matching system / preselection included in that Social Status system you have in mind, like when a Lord will come to visit.
Real difference:
- Girls are simply presented with a costumer trait like 'Huge Dick' and have to deal with it in some fashion.
- Likes blondes would only make sense if we generated costumers first and matched those with existing girls, means extra code and little benefit (in my opinion anyway)
sorry... I was under impression that there will be some sort of matching system / preselection included in that Social Status system you have in mind, like when a Lord will come to visit.
----------
About that girls meeting, will it be using its own game screen with standard pictures, visual novel style or a combination of these? Because if there will be options like "go to pub/beach/restaurant" that will take places somewhere, with its own submenus like "buy her a drink", then that's for sure be enough. (You suggested something like that on page 2, and just background and questgirl can do it fine)
---------
Girl that doesn't whore is a nice concept - there's a lot of interesting characters who simply do not have enough H pictures to work as one, and this is ideal for them. Also good for all these series themed girl packs, because most of the minor characters usually suffers from the same scarcity, but without them it never feels complete. (you can still be intimate with them personaly throught relationship, yes?)
Thanks a lot for your explanation! I get it now... and agree that there are better things to do now.
Anyway, you will be free from my questions for a while, because I'll be at a place without Internet until monday. But I take renpy with me to get a better grip of it and try to make some of the scenes I talked about. Hope I understand you better then
Also max of stats will be modified by the game, warrior will never be able to get to skilled in sex stats and prostitute will never be able to get to skilled in battle stats and so on.I see. So this "occupation" thing is basically like character class in some rpg. I guess available traits will be different too.
Girl that doesn't whore is a nice concept - there's a lot of interesting characters who simply do not have enough H pictures to work as one, and this is ideal for them.Then you'll need some kind of flag to forbid change of profession for such characters into prostitute.
I see. So this "occupation" thing is basically like character class in some rpg. I guess available traits will be different too.
Then you'll need some kind of flag to forbid change of profession for such characters into prostitute.
I implemented the Customer class: see patch_customers.py in my dropbox folder. You can either replace your pyt - classes.rpy file, or you can do the following: The contents of patch_customers.py should be appended to the Brothel class, the client line in the whore method should be replaced and the old Customer class should be deleted. It worked flawlessly for me in 2.0.
ok updates on graphics side:
I'm almost finished layouts for screens available in the version of the game that I have in my folder
[size=78%](you can write an updated list of all current game screens?)[/size]
after all the layouts was confirmed I star some mood boards (collage of pictures to get the atmosphere and feel of the graphics in general)
then step to the real graphics
Worked a bit on the girlinteractions and dropped my changes into a folder with my username into the dropbox.
There is a text file in there with the specific things I changed.
Will take a look at the the girlinteractions again if I don't get distracted later, maybe I will polish them a bit, they are awfully thin and same sounding at the moment.
Didn't manage to get much done since last time but I added two more Traits to my doc (https://docs.google.com/document/d/1-wJ0U_WZ8z6pSMHeyTpY60a06eB-HcSJyGegWRQ9vbc/edit).
If you have any ideas/comments regarding new traits or the ones in the doc don't hesitate to add a comment to it.
Sorry, renamed something in that folder and it seems to have screwed up the link for some reason.
Anyway dropped the traits into my folder.
edited because I didn't check my shit.
What else?Maybe available occupations? Or some kind of "temporary" flag for non-permanent traits, like small scars which eventually will heal themselves in a few days (if you going to use 'em).
Or some kind of "temporary" flag for non-permanent traits, like small scars which eventually will heal themselves in a few days (if you going to use 'em).
Maybe available occupations?
Xela, you mentioned a mission system. I take it the girlsmeet encounters you are working on are something different. Are missions quests? Or randomly generated short- to mid-term goals for the player? Or something else?
The "exploration engine" sounds even more interesting to me, but given Xela's plans they are scheduled for far later in the process, so it's probably to early to work on that.
Alright guys, I was thinking about what I could tackle next codewise. What system would really make the game better at this point?
So, team, what do you think I should do? Please remember I'm really bad at creating content, I would much rather create systems that make it easy/easier/possible for you to add content.
OK, how can you restore AP then? Can max AP be increased or decreased?
Your explanation makes sense, and it feels better than what I had thought of.
Any Idea how many Actionpoints a girl should get? (different amounts for slaves/normal girls?)
Also i have the feeling all this design talk should be collected in a single place.
<?xml version="1.0" encoding="utf-8"?>
<traits>
<trait
id="Dummy" #Name
desc="This is a dummy trait! " #Description
temp='3'> # if set to more than 0, trait is temporary, it will disappear after the set number of days. 0 defines a permanent trait that can only be removed thought some sort of user interaction.
<mod charisma = '50' /> # Changes the stat
<max charisma = '10' /> # Changes Max of a stat
<max refinement = '10' />
<min charisma = '20' /> Changes Min of a stat
<effects name = 'Confused' /> # Sets a girl flag to true, whatever that flag may be
<blocks name = 'Cute' /> # Blocks this trait
</trait>
</traits>
<?xml version="1.0" encoding="utf-8"?>
<girls>
<girl
id="Sakura"
folder="naruto"
name="Sakura Haruno"
desc="MedicalNin from Naruto series"
charisma="20"
refinement = "10"
libido="40"
constitution="40"
exp="0"
joy="20"
character="45"
reputation="0"
health="100"
anal="0"
normalsex="5"
blowjob="2"
lesbian="0"
attack = '18'
defence = '15'
magic = '10'
agility = '12'
mp = '15'
occupation="Prostitute"
location="slavemarket"
status="slave">
<bskill name = "FistAttack"/>
<mskill name = "Fire 1"/>
<absolute_block trait = 'Megahuge Tits'/> #Permanently blocks trait for this girl.
<block trait = 'Weakminded'/> #Just blocks this trait (These blocks can be removed, when you get rid of a different trait that blocked this trait for example)
<trait name="Dummy" /> #Activates this trait on gamestart.
</girl>
I implemented a Calendar class that returns the weekday, week and lunar phase given a count of days. I assumed that you start counting days at 1, but it's a trivial adjustment if you actually start at 0. The names of the days, the length of a week and the length and start of the lunar cycle can be customized when instantiating the class. For real-world names and lengths, just instantiate without any arguments. I'm still undecided what to tackle next, so I did this as a "target of opportunity".
I gave some thought to girls system, more specifically days off. Perhaps player should be somehow forced to provide them from time to time, at least to free girls. Maybe min fatigue will increase if you don't give it for a long time, or girl herself might sometimes ask player to provide one or several days off, and refusing will hit her disposition.
Min fatigue increasing doesn't make any sense so you'll have to explain me that one.I heard somewhere that IRL we have holidays and vacations not just for fun. Everyday rest after work isn't enough for full recovering, fatigue is gradually accumulating, and to avoid it we have holidays every week and even vacations every year (most of us, hopefully :) ).
Girl asking a player for several days off every time she gets tires will get old really fast but it is a good idea random event that could happen on throwing dice on next day. Girl could always ask for vacation time.Yup, that's what I'm talking about. Random days off to visit her parents and friends, go shopping, because of some illness and so on, not just when she tired.
I heard somewhere that IRL we have holidays and vacations not just for fun. Everyday rest after work isn't enough for full recovering, fatigue is gradually accumulating, and to avoid it we have holidays every week and even vacations every year (most of us, hopefully :) ).
In game it means that girl without days off at all cannot rest fully no matter how many AP you put into rest, i.e. her min fatigue cannot be 0, and eventually, maybe months or year later, she will too tired to work at all (when min fatigue=max fatigue).
Yup, that's what I'm talking about. Random days off to visit her parents and friends, go shopping, because of some illness and so on, not just when she tired.
Kinda counter-intuitive. Girls gets rest-days to visit family and friends.Sometimes they can spend money in shops buying new items, like girls in wm already do in their free time.
Sometimes they can spend money in shops buying new items, like girls in wm already do in their free time.
Do we need beauty like in WM as well? Then we calc looks from (beauty+charisma)/2?Well, as wiki states, charisma is "compelling attractiveness or charm that can inspire devotion in others". In other words, it's not just beauty, it's more like power of character, power of mind. You might want to combine it with character stat though.
Do we need Happiness as a separate stat?I guess if you want you could use happiness as complex stat which depends on joy, disposition, fatigue, money, e.t.c.
Maybe add obedience to it as well?Well, if girl doesn't like cleaning, but she still does it because of high obedience with penalties to joy and disposition, it means she has strong character. However, if girls are not going to refuse any jobs except for occupation limitations, I'm not sure we need both stats at the same time. Maybe character for free girls and obedience for slaves?
Can anyone think of a good use for this that would justify spending time modifying this stat in functions?Maybe it means girl's rage for pics like profileangry? :)
Maybe -500 so you can push her into hatred territory?Definitely. I never understood why wm uses both love and hate, while max love usually means min hate and vice versa.
Since battle stats are mimicking those of the battle engine, there is not much that can be added here.Magic defence? Luck(=critical hits)?
Well, as wiki states, charisma is "compelling attractiveness or charm that can inspire devotion in others". In other words, it's not just beauty, it's more like power of character, power of mind. You might want to combine it with character stat though.
I guess if you want you could use happiness as complex stat which depends on joy, disposition, fatigue, money, e.t.c.
Oh, and joy's minimum should be -100, I think. Or from -50 to 50.
Well, if girl doesn't like cleaning, but she still does it because of high obedience with penalties to joy and disposition, it means she has strong character. However, if girls are not going to refuse any jobs except for occupation limitations, I'm not sure we need both stats at the same time. Maybe character for free girls and obedience for slaves?
Maybe it means girl's rage for pics like profileangry? :)
Or since we already have joy and love, mood can be used for things like "in a mood for a work", "in a mood for a date", "in a mood for talking", "in a mood for a fight" and so on, if you want to code such things.
Definitely. I never understood why wm uses both love and hate, while max love usually means min hate and vice versa.
Magic defence? Luck(=critical hits)?
libido=0, Self-explanatory.Maybe also nymphomania like in slavemaker? In wm popular whores often have 0 libido after working day, and you can't do anything except for constantly buying special items.
New stats will be required if we add new categories, but I forgot about striptease... maybe also 'Service' skill like in WM?I don't even try throwing up ideas. Games like "valet pletey" (I'm still not sure about such translation) and newest slavemaker have more than I ever would be able to think up :)
Anything else that would make sense? Anything forgotten?Depends. Minor stats like fitness, cooking, singing, dancing if you feel like taking some ideas from other games.
Do we want more? Cleaning? Going to court? Hunting, Guarding or something else for Warrior types to do, especially before Arena is ready, or should we keep Warrior types out of the game before we move to Advanced version?Cleaning (mostly for slaves) and guarding for warriors at least. Personally i never liked gangs as they being used in wm, I prefer wm ex girls guarding brothel. Others jobs can be added in advanced version.
Maybe also nymphomania like in slavemaker? In wm popular whores often have 0 libido after working day, and you can't do anything except for constantly buying special items.
I don't even try throwing up ideas. Games like "valet pletey" (I'm still not sure about such translation) and newest slavemaker have more than I ever would be able to think up :)
Depends. Minor stats like fitness, cooking, singing, dancing if you feel like taking some ideas from other games.
Cleaning (mostly for slaves) and guarding for warriors at least. Personally i never liked gangs as they being used in wm, I prefer wm ex girls guarding brothel. Others jobs can be added in advanced version.
Btw, what about exploring catacombs or just some wild places for warriors?
It's kind of low on events thou and I got really bored with slavemaker long time ago, I've downloaded new version not to long ago but it seems the same with more girls...You don't need to play, just take a look at "sex training" page :D
Fitness = Constitution?Not exactly. (http://www.otakubell.com/smw/index.php/V3:Fitness) It's kinda substat, like dancing for refinement.
Kinda goes without saying for advanced version. Do we need this for SimBro one?Without it there is no way warriors can bring any profit, isn't it?
You don't need to play, just take a look at "sex training" page :D
(http://s002.youpic.su/pictures/1359147600/thumb_7bd019998e6705bd747bb4cff05d4b5f.jpg) (http://youpic.su/view.php?id=s002.youpic.su/pictures/1359147600/7bd019998e6705bd747bb4cff05d4b5f.jpg)
Not exactly. (http://www.otakubell.com/smw/index.php/V3:Fitness) It's kinda substat, like dancing for refinement.
Without it there is no way warriors can bring any profit, isn't it?
or create some sort of Security Agency and rent them out for cash. (This can be used in advanced version later)Maybe bounty hunters or old good racket then?
I don't see any reason why you would need guardians for the brothels assuming that whoring isn't illegal in PyTFall.Why not? They protect your brothel not just from drunk customers, but from competitors and criminals as well and prevent slaves (and maybe prisoners) from escaping. Sounds too important to me to simply put it in the running costs and forget. Even if brothels are legal, I doubt this business is perfectly safe.
Maybe bounty hunters or old good racket then?
Why not? They protect your brothel not just from drunk customers, but from competitors and criminals as well and prevent slaves (and maybe prisoners) from escaping. Sounds too important to me to simply put it in the running costs and forget. Even if brothels are legal, I doubt this business is perfectly safe.
I really don't see what warrior-girls would add to (the simple version of) the game.
I don't see any reason why you would need guardians for the brothels assuming that whoring isn't illegal in PyTFall.
The bouncers for the occasional rowdy guest would be pretty much included in the running costs of the brothel. (that reminds me: a finance screen would be nice)
(that reminds me: a finance screen would be nice)
On the subject of stats: The easier they are to distinguish the better.
I would replace charisma with beauty since refinement seems to mean almost the same.
Don't think we need a happiness stat, we have joy already.
Do we need a separate obedience stat from disposition? I had Interpreted it as respect or trust in the lower ranges and liking/loving you in the upper part of the spectrum.
SimBro 1x has warrior types but they are handled same as prostitutes. I think best solution for now is not to include any behavior modifier based on occupation. If Rudy decides to code Arena, we'll add the whole warriors block to SimBrothel version and make occupation count. If not, we simply ignore occupation in SimBro version all together and any girl can do any job.That is exactly my problem: there is no incentive, no added gameplay from having guards - girls or not. I simply think we shouldn't bother using our energy on them unless we have a something similar interesting from them as we get from the whores.
What does finance screen do? I understand that it is a reports screen but what should it display? I myself never really cared all that much for finance stats. Can you make a list with everything you wish to see there?The bare basics would be just a simple message how much profit you are making, but it would be nice to have a clean list of the income and expenses for each of the players Brothels. (something really fancy would be a variable telling you how much each girl brings in and costs over the whole game.)
Right, so screw happiness, at least until the advanced version. I think we should keep charisma for now, it has been in every SimBro version and decide if we want beauty as well in SimBro version.Isn't charisma basically part of refinement as it describes beauty that stems from the way a person acts? Anyway I wouldn't add beauty as an additional stat.
Don't know about separation as we do not even have obedience right now. What would be a modifier to obedience without slave training(considering that interactions/girlsmeets are modifiers to disposition)? Any ideas?Ah sorry, wasn't clear there: That was supposed to be an argument against obedience since I think it would be basically another stat for the same thing from my perspective.
if it makes the game more interesting and enjoyable or if it adds an annoying step for the player to keep your game flowing.You have a point, i'll give it some thought. Still, I don't think we should completely forget about security, we just need to make it interesting.
That is exactly my problem: there is no incentive, no added gameplay from having guards - girls or not. I simply think we shouldn't bother using our energy on them unless we have a something similar interesting from them as we get from the whores.
The bare basics would be just a simple message how much profit you are making, but it would be nice to have a clean list of the income and expenses for each of the players Brothels. (something really fancy would be a variable telling you how much each girl brings in and costs over the whole game.)
Isn't charisma basically part of refinement as it describes beauty that stems from the way a person acts? Anyway I wouldn't add beauty as an additional stat.
Ah sorry, wasn't clear there: That was supposed to be an argument against obedience since I think it would be basically another stat for the same thing from my perspective.
I am not sure if I explained myself understandably this time it is kinda late.
Xela, what about whoring legality in PyTFall? In wm, for example, brothels seem at least semi-legal, if not worse.
It’s still hard to explain why you want to use your precious girls as common security and not just hire some strong thugs for that. But it’s fun, so screw logic :) (same for cleaning)Btw, some time ago in some other thread there was a proposal to use male characters (like Naruto himself) for "safe for work" things like security.
I imagine these events to be rather small and unimportant, just to spice up things a bit. For example, a scene where a flat-chested girl will comment a girl with big boobs. Just a background, questgirl pictures, few lines of text - few clicks and it's gone.Personally, I like the idea. It also could be useful much later, when (if) relationships between characters will be implemented.
Personally, I like the idea. It also could be useful much later, when (if) relationships between characters will be implemented.
Lets start with traits. I would say that the system is ready and working, needs testing obviously and traits themselves. If anyone is up to it, grab the file in the shared folder, throw it into your own folder and add traits as you see them, we can balance those out later, when game pace is clearer.How can I get access to this shared folder? Shouldn't you send me an invitation (as dropbox offers me when I try to share some random folder) or something?
Hm, making traits sounds interesting. I'll give it a try.
How can I get access to this shared folder? Shouldn't you send me an invitation (as dropbox offers me when I try to share some random folder) or something?
thank you, I will try to work on that for a while... but I'm not sure if It be of any use, because I'm much more hopeless in coding then I thought I am. I spend 6 hours trying to add a trait "clumsy" that would increase girl's upkeep, only to get myself confused more :(
OK, I start to work on traits now. Just one thing, I don't quite understand what "effects name" string does. Could you give a couple of examples?
That is not possible. Traits can modify current, maximum and minimum of stats, girl's upkeep is a function. While it is perfectly possible to write code that would allow modders to change value of girl's upkeep, noone asked me to code that in.I always thought it should be part of jobs logic, not traits. Because different traits have different influence on different jobs.
I always thought it should be part of jobs logic, not traits. Because different traits have different influence on different jobs.
That is not possible. Traits can modify current, maximum and minimum of stats, girl's upkeep is a function. While it is perfectly possible to write code that would allow modders to change value of girl's upkeep, noone asked me to code that in.I was able to finally get it to work after another looking at functions.rpy (that file is really something, I never even heard of half of these functions before). I just added another self.upkeep stat under sGirl class that this <mod upkeep = '10' /> line in traits.xml can modify and then added it's value to getUpkeep formula. Really blunt way to do that, but Hey, I'm happy to see my first attempt to do something :)
I was looking into this with a clumsy girl, girl wearing expensive clothes in work (=picture based) and some of these non-human girls and robots that needs extra maintenance or food in mind.Good idea. With Xela's permission I'll add it to some traits.
I was able to finally get it to work after another looking at functions.rpy (that file is really something, I never even heard of half of these functions before). I just added another self.upkeep stat under sGirl class that this <mod upkeep = '10' /> line in traits.xml can modify and then added it's value to getUpkeep formula. Really blunt way to do that, but Hey, I'm happy to see my first attempt to do something :)
I still think it makes sense for a trait to increase upkeep... I was looking into this with a clumsy girl, girl wearing expensive clothes in work (=picture based) and some of these non-human girls and robots that needs extra maintenance or food in mind.
Good idea. With Xela's permission I'll add it to some traits.
I guess setting upkeep to 0 and having it modified to whatever by traits is the best bet.Illogically. Then upkeep of usual, inconspicuous girl without any traits would be free. Or we must create a trait for everything, even for simple human being.
What you did there is called programming, not modding (strictly speaking) since you've modified the base code. In any case, that will only work on your PC unless the dev version is upgraded with it.I'm sorry for misunderstanding... the truth is, I don't really know how to correctly add something as a mod, even If I wanted to. I was just exploring the code a bit and copy/pasting parts of it in hope it will do something I expect It will. I wouldn't dare to touch the dev version...
38
#Traits
self.ab_traits = [] #Permenatly blocked traits
self.btraits = [] #Blocked traits
self.traits = [] #Active traits
self.temptraits = dict()#Temporary traits
self.cache = dict()
self.image = false
self.previouswork = dict(location='', action='')
self.action = None
self.locked = dict()
self.rank = 1
self.AP = 0
self.baseAP = 2
#self.gold = 0
self.price = 500
self.fame = 0
self.mood = 0
self.disposition=0
self.fatigue = 100
self.upkeep = 0 ####
self.min = dict(
charisma=0,
refinement=0,
libido=0,
constitution=0,
exp=0,
joy=0,
character=0,
reputation=0,
health=0,
fame=0,
mood=0,
disposition=0,
fatigue = 0,
attack = 0,
magic = 0,
defence=0,
agility = 0,
mp = 0,
anal=0,
normalsex=0,
blowjob=0,
lesbian=0,
upkeep=-100 ####
)
self.max = dict(
charisma=100,
refinement=35,
libido=100,
constitution=100,
exp=111000,
joy=100,
character=100,
reputation=100,
health=100,
fame=100,
mood=1000,
disposition=1000,
fatigue = 300,
attack = 40,
magic = 30,
defence=40,
agility = 25,
mp = 30,
anal=100,
normalsex=100,
blowjob=100,
lesbian=100,
upkeep=1000 ####
)
self.clothes = dict(
-----------------------------
-----------------------------
195
def getUpkeep(self):
if self.status == 'slave':
if self.occupation == 'Prostitute':
bu = 20 * self.rank
su = self.charisma/10 + self.refinement*1.5 + self.constitution/5 + self.reputation/2 + self.fame/2 # Stats Upkeep
ssu = self.anal/8 + self.normalsex/8 + self.blowjob/8 + self.lesbian/8
su = su*1.5
ssu = ssu*1.5
if ssu > 40:
ssu = ssu * 2
if self.libido < 30:
su = su * 1.4
upkeep = bu + su + ssu + self.upkeep ####
return upkeep
elif self.status == 'free':
if self.occupation == 'Prostitute':
bu = 30 * self.rank
su = self.charisma/10 + self.refinement*1.5 + self.constitution/5 + self.reputation/2 + self.fame/2 # Stats Upkeep
ssu = self.anal/8 + self.normalsex/8 + self.blowjob/8 + self.lesbian/8
su = su*1.5
ssu = ssu*1.5
if ssu > 80:
ssu = ssu * 2
if self.libido < 30:
su = su * 1.4
upkeep = bu + su + ssu + self.upkeep ####
return upkeep
if self.occupation == 'Warrior':
bu = 30 * self.rank
su = self.constitution/2 + self.reputation/2 + self.fame/2 # Stats Upkeep
bsu = self.attack/2 + self.magic/2 + self.defence/2 + self.agility/2 # Battle Stats Upkeep
upkeep = bu + su + bsu + self.upkeep ####
return upkeep
else:
bu = 100 * self.rank
su = self.charisma/5 + self.refinement + self.constitution/5 + self.reputation/2 + self.fame/2 # Stats Upkeep
ssu = self.anal/5 + self.normalsex/5 + self.blowjob/5 + self.lesbian/5
bsu = self.attack/2 + self.magic/2 + self.defence/2 + self.agility/2
if ssu > 40:
ssu = ssu * 2
if self.libido < 30:
su = su * 1.4
upkeep = bu + su + ssu + bsu + self.upkeep ####
return upkeep
def getWPrice(self): # Work Price
And then I added <mod upkeep = '40' /> into dummy trait to test in on Sakura. I didn't touch the girl data file.Illogically. Then upkeep of usual, inconspicuous girl without any traits would be free. Or we must create a trait for everything, even for simple human being.
if you get interesting ideas for traits you create as to how they should effect jobs, put them in separate file in your folderThen please explain what do you mean by Heal job. Rest already should restore health, isn't it?
Then please explain what do you mean by Heal job. Rest already should restore health, isn't it?
Oh, and what about magic defence and luck stats I've asked earlier? Should I add them to traits logic?
I think I've finished with traits for now. Let me know if you want more or if you don't like standard wm description which I've used for some of them.
WM descriptions may be copyrighted, you never know :D
While running game code:
File "game\library\pyt - screens - nextday.rpy", line 6, in script
File "game\library\pyt - screens - nextday.rpy", line 37, in python
TypeError: unsupported operand type(s) for -=: 'float' and 'NoneType'
Amount of fee for an entrance should be selected by player from 3-5 fixed values, something like "small", "medium" and "high". Too much freedom here will be a hindrance for gameplay.
Perhaps we should add barmaids too. I guess they could serve drinks for a few customers near the bar counter and should provide drinks and snack for waitresses job. Maybe one barmaid with 100 constitution can work with 10 waitresses or something like that.
About the waitress job - as we know from slavemaker, there're bars and there're sleazy bars with some "additional service". I'm not sure how we should handle this, or should we bother in a first place.
Xela in the current version the game will break if you have a girl from the park in the players brothel, specifically:Code: [Select]While running game code:
File "game\library\pyt - screens - nextday.rpy", line 6, in script
File "game\library\pyt - screens - nextday.rpy", line 37, in python
TypeError: unsupported operand type(s) for -=: 'float' and 'NoneType'
Will this all be tied to building upgrades / performing places(rooms)? Like in simbro1x, if in advanced version we have more jobs/upgrades like gambling, food ,show fights, cosplay, bondage... different buildings could use a different combinations of these.
I was thinking about possibility of setting some or all jobs with this new AP system, but I don't know the line when it's fun and when it became a princess maker for every girl...
I also had an idea at the very first stages of the game, to create one type Service Girl and have her do cleaning, waitress and bar-tending.This might be a good idea, at least for barmaids. Player sets several girls to work in bar and lets them self-organize it. Those who have talent to be barmaids (judging by traits and stats) work as barmaids, same for waitresses.
This might be a good idea, at least for barmaids. Player sets several girls to work in bar and lets them self-organize it. Those who have talent to be barmaids (judging by traits and stats) work as barmaids, same for waitresses.
Just some thoughts about how to balance out training so we won't end up with perfect girls after a couple of month. I see two different ways (and the third way which unites this two): slavemaker, where rise of one skill often leads to reduction of one or more others; and skyrim, where training costs money with constantly rising cost, and it's quite bearable up to 50, considerably more costly up to 75, much more costly up to 90 and can't go further after 90, so player (at least in PyTFall) should use items to rise stat even more.
JobFilterName[JOBFILTER_GENERAL] = "General";
JobFilterDescription[JOBFILTER_GENERAL] = "These are general jobs that work individually in any building.";
JobFilterIndex[JOBFILTER_GENERAL] = JOB_RESTING;
JobName[JOB_RESTING] = "Free Time";
JobDescription[JOB_RESTING] = "She will take some time off, maybe do some shopping or walk around town. If the girl is unhappy she may try to escape.";
JobName[JOB_TRAINING] = "Practice Skills";
JobDescription[JOB_TRAINING] = "She will train either alone or with others to improve her skills.";
JobName[JOB_CLEANING] = "Cleaning";
JobDescription[JOB_CLEANING] = "She will clean the building, as filth will put off some customers.";
JobName[JOB_SECURITY] = "Security";
JobDescription[JOB_SECURITY] = "She will patrol the building, stopping mis-deeds.";
JobName[JOB_ADVERTISING] = "Advertising";
JobDescription[JOB_ADVERTISING] = "She will advertise the building's features in the city.";
JobName[JOB_MATRON] = "Matron";
JobDescription[JOB_MATRON] = "This girl will look after the other girls. Only non-slave girls can have this position and you must pay them 300 gold per week. Also, it takes up both shifts. (max 1)";
JobName[JOB_TORTURER] = "Torturer";
JobDescription[JOB_TORTURER] = "She will torture the prisoners in addition to your tortures, she will also look after them to ensure they don't die. (max 1 for all brothels)";
JobName[JOB_EXPLORECATACOMBS] = "Explore Catacombs";
JobDescription[JOB_EXPLORECATACOMBS] = "She will explore the catacombs looking for treasure and capturing monsters and monster girls. Needless to say, this is a dangerous job.";
JobName[JOB_BEASTCAPTURE] = "Beast Capture";
JobDescription[JOB_BEASTCAPTURE] = "She will go out into the wilds to capture beasts. (max 2)";
JobName[JOB_BEASTCARER] = "Beast Carer";
JobDescription[JOB_BEASTCARER] = "She will look after the needs of the beasts in your possession. (max 1)";
JobFilterName[JOBFILTER_BROTHEL] = "Brothel";
JobFilterDescription[JOBFILTER_BROTHEL] = "These are jobs for running a brothel in the current building.";
JobFilterIndex[JOBFILTER_BROTHEL] = JOB_WHOREBROTHEL;
JobName[JOB_WHOREBROTHEL] = "Whore in Brothel";
JobDescription[JOB_WHOREBROTHEL] = "She will whore herself to customers within the building's walls. This is safer but a little less profitable.";
JobName[JOB_WHORESTREETS] = "Whore on Streets";
JobDescription[JOB_WHORESTREETS] = "She will whore herself on the streets. It is more dangerous than whoring inside but more profitable.";
JobName[JOB_BROTHELSTRIPPER] = "Stripper in Brothel";
JobDescription[JOB_BROTHELSTRIPPER] = "She will strip for the customers.";
JobName[JOB_MASSEUSE] = "Masseuse in Brothel";
JobDescription[JOB_MASSEUSE] = "She will give massages to the customers.";
JobFilterName[JOBFILTER_GAMBHALL] = "Gambling Hall";
JobFilterDescription[JOBFILTER_GAMBHALL] = "These are jobs for running a gambling hall in the current building.";
JobFilterIndex[JOBFILTER_GAMBHALL] = JOB_CUSTOMERSERVICE;
JobName[JOB_CUSTOMERSERVICE] = "Customer Service";
JobDescription[JOB_CUSTOMERSERVICE] = "She will look after customer needs.";
JobName[JOB_WHOREGAMBHALL] = "Whore for Gamblers";
JobDescription[JOB_WHOREGAMBHALL] = "She will give her sexual favors to the customers.";
JobName[JOB_DEALER] = "Game Dealer";
JobDescription[JOB_DEALER] = "She will manage a game in the gambling hall. (requires 3)";
JobName[JOB_ENTERTAINMENT] = "Entertainer";
JobDescription[JOB_ENTERTAINMENT] = "She will provide entertainment to the customers.";
JobName[JOB_XXXENTERTAINMENT] = "XXX Entertainer";
JobDescription[JOB_XXXENTERTAINMENT] = "She will provide sexual entertainment to the customers.";
JobFilterName[JOBFILTER_BAR] = "Bar";
JobFilterDescription[JOBFILTER_BAR] = "These are jobs for running a bar.";
JobFilterIndex[JOBFILTER_BAR] = JOB_BARMAID;
JobName[JOB_BARMAID] = "Barmaid";
JobDescription[JOB_BARMAID] = "She will staff the bar and serve drinks.";
JobName[JOB_WAITRESS] = "Waitress";
JobDescription[JOB_WAITRESS] = "She will bring drinks and food to customers at the tables.";
JobName[JOB_STRIPPER] = "Stripper in Bar";
JobDescription[JOB_STRIPPER] = "She will strip on the tables and stage for the customers.";
JobName[JOB_WHOREBAR] = "Whore in Bar";
JobDescription[JOB_WHOREBAR] = "She will provide sex to the customers.";
JobName[JOB_SINGER] = "Singer";
JobDescription[JOB_SINGER] = "She will sing for the customers.";
JobFilterName[JOBFILTER_MOVIESTUDIO] = "Movie Studio";
JobFilterDescription[JOBFILTER_MOVIESTUDIO] = "These are jobs for running a movie studio.";
JobFilterIndex[JOBFILTER_MOVIESTUDIO] = JOB_FILMBEAST;
JobName[JOB_FILMBEAST] = "Film Bestiality";
JobDescription[JOB_FILMBEAST] = "She will film bestiality scenes.";
JobName[JOB_FILMSEX] = "Film Sex";
JobDescription[JOB_FILMSEX] = "She will film normal sex scenes.";
JobName[JOB_FILMANAL] = "Film Anal";
JobDescription[JOB_FILMANAL] = "She will film anal scenes.";
JobName[JOB_FILMLESBIAN] = "Film Lesbian";
JobDescription[JOB_FILMLESBIAN] = "She will do a lesbian scene.";
JobName[JOB_FILMBONDAGE] = "Film Bondage";
JobDescription[JOB_FILMBONDAGE] = "She will perform in bondage scenes.";
JobName[JOB_FLUFFER] = "Fluffer";
JobDescription[JOB_FLUFFER] = "She will keep the porn stars and animals aroused.";
JobName[JOB_CAMERAMAGE] = "Camera Mage";
JobDescription[JOB_CAMERAMAGE] = "She will film the scenes. (requires 1) (max 1)";
JobName[JOB_CRYSTALPURIFIER] = "Crystal Purifier";
JobDescription[JOB_CRYSTALPURIFIER] = "She will clean up the filmed scenes. (requires 1)";
JobFilterName[JOBFILTER_COMMUNITYCENTRE] = "Community Centre";
JobFilterDescription[JOBFILTER_COMMUNITYCENTRE] = "These are jobs for running a community centre.";
JobFilterIndex[JOBFILTER_COMMUNITYCENTRE] = JOB_COLLECTDONATIONS;
JobName[JOB_COLLECTDONATIONS] = "Collect Donations";
JobDescription[JOB_COLLECTDONATIONS] = "She will collect money to help the poor.";
JobName[JOB_FEEDPOOR] = "Feed Poor";
JobDescription[JOB_FEEDPOOR] = "She will work in a soup kitchen.";
JobName[JOB_MAKEITEMS] = "Make Crafts";
JobDescription[JOB_MAKEITEMS] = "She will craft cheap handmade items.";
JobName[JOB_SELLITEMS] = "Sell Crafts";
JobDescription[JOB_SELLITEMS] = "She will go out and sell previously crafted items.";
JobName[JOB_COMUNITYSERVICE] = "Community Service";
JobDescription[JOB_COMUNITYSERVICE] = "She will go around town and help out where she can.";
JobFilterName[JOBFILTER_DRUGLAB] = "Drug Lab";
JobFilterDescription[JOBFILTER_DRUGLAB] = "These are jobs for running a movie studio.";
JobFilterIndex[JOBFILTER_DRUGLAB] = JOB_VIRASPLANTFUCKER;
JobName[JOB_VIRASPLANTFUCKER] = "Fuck Viras Plants";
JobDescription[JOB_VIRASPLANTFUCKER] = "She will allow Viras plants to inseminate her, creating Vira Blood.";
JobName[JOB_SHROUDGROWER] = "Grow Shroud Mushrooms";
JobDescription[JOB_SHROUDGROWER] = "She will grow Shroud Mushrooms, which require a lot of care and may explode.";
JobName[JOB_FAIRYDUSTER] = "Fairy Duster";
JobDescription[JOB_FAIRYDUSTER] = "She will capture fairies and grind them into a fine powder known as Fairy Dust.";
JobName[JOB_DRUGDEALER] = "Drug Dealer";
JobDescription[JOB_DRUGDEALER] = "She will go out and sell your drugs on the streets.";
JobFilterName[JOBFILTER_ALCHEMISTLAB] = "Alchemist Lab";
JobFilterDescription[JOBFILTER_ALCHEMISTLAB] = "These are jobs for running an alchemist lab.";
JobFilterIndex[JOBFILTER_ALCHEMISTLAB] = JOB_FINDREGENTS;
JobName[JOB_FINDREGENTS] = "Find Reagents";
JobDescription[JOB_FINDREGENTS] = "She will go out and look for promising potion ingredients.";
JobName[JOB_BREWPOTIONS] = "Brew Potions";
JobDescription[JOB_BREWPOTIONS] = "She will brew a random potion using available ingredients.";
JobName[JOB_POTIONTESTER] = "Guinea Pig";
JobDescription[JOB_POTIONTESTER] = "She will test out random potions. Who knows what might happen? (requires 1)";
JobFilterName[JOBFILTER_ARENA] = "Arena";
JobFilterDescription[JOBFILTER_ARENA] = "These are jobs for running an arena.";
JobFilterIndex[JOBFILTER_ARENA] = JOB_FIGHTBEASTS;
JobName[JOB_FIGHTBEASTS] = "Fight Beasts";
JobDescription[JOB_FIGHTBEASTS] = "She will fight to the death against beasts you own. Dangerous.";
JobName[JOB_WRESTLE] = "Wrestle";
JobDescription[JOB_WRESTLE] = "She will take part in a wrestling match. Not dangerous.";
JobName[JOB_FIGHTTODEATH] = "Cage Match";
JobDescription[JOB_FIGHTTODEATH] = "She will fight to the death against other girls. Dangerous.";
JobName[JOB_FIGHTVOLUNTEERS] = "Fight Volunteers";
JobDescription[JOB_FIGHTVOLUNTEERS] = "She will fight against customer volunteers for gold prizes. Not dangerous.";
JobName[JOB_COLLECTBETS] = "Collect Bets";
JobDescription[JOB_COLLECTBETS] = "She will collect bets from the customers. (requires 1)";
JobFilterName[JOBFILTER_TRAININGCENTRE] = "Training Centre";
JobFilterDescription[JOBFILTER_TRAININGCENTRE] = "These are jobs for running a training centre.";
JobFilterIndex[JOBFILTER_TRAININGCENTRE] = JOB_TEACHBDSM;
JobName[JOB_TEACHBDSM] = "Teach BDSM";
JobDescription[JOB_TEACHBDSM] = "She will teach other girls in BDSM skills.";
JobName[JOB_TEACHSEX] = "Teach Sex";
JobDescription[JOB_TEACHSEX] = "She will teach other girls the ins and outs of regular sex.";
JobName[JOB_TEACHBEAST] = "Teach Bestiality";
JobDescription[JOB_TEACHBEAST] = "She will teach other girls how to safely fuck beasts.";
JobName[JOB_TEACHMAGIC] = "Teach Magic";
JobDescription[JOB_TEACHMAGIC] = "She will teach other girls how to wield magic.";
JobName[JOB_TEACHCOMBAT] = "Teach Combat";
JobDescription[JOB_TEACHCOMBAT] = "She will teach other girls how to fight.";
JobName[JOB_DAYCARE] = "Daycare";
JobDescription[JOB_DAYCARE] = "She will look after local children. (non-sexual)";
JobName[JOB_SCHOOLING] = "Schooling";
JobDescription[JOB_SCHOOLING] = "She will teach the local children. (non-sexual)";
JobName[JOB_TEACHDANCING] = "Teach Dancing";
JobDescription[JOB_TEACHDANCING] = "She will teach other girls dancing and social skills.";
JobName[JOB_TEACHSERVICE] = "Teach Service";
JobDescription[JOB_TEACHSERVICE] = "She will teach other girls a variety of service skills.";
JobName[JOB_TRAIN] = "Student";
JobDescription[JOB_TRAIN] = "She will learn from all of the other girls who are teaching here.";
JobFilterName[JOBFILTER_CLINIC] = "Medical Clinic";
JobFilterDescription[JOBFILTER_CLINIC] = "These are jobs for running a medical clinic.";
JobFilterIndex[JOBFILTER_CLINIC] = JOB_DOCTOR;
JobName[JOB_DOCTOR] = "Doctor";
JobDescription[JOB_DOCTOR] = "She will become a doctor. Doctors earn extra cash from treating locals. (requires 1)";
JobName[JOB_GETABORT] = "Get Abortion";
JobDescription[JOB_GETABORT] = "She will get an abortion, removing pregnancy and/or insemination.(takes 2 days)";
JobName[JOB_PHYSICALSURGERY] = "Cosmetic Surgery";
JobDescription[JOB_PHYSICALSURGERY] = "She will undergo magical surgery to \"enhance\" her appearance. (takes 5 days)";
JobName[JOB_HEALING] = "Healing";
JobDescription[JOB_HEALING] = "She will have her wounds attended. This takes 1 day for each wound trait.";
JobName[JOB_REPAIRSHOP] = "Repair Shop";
JobDescription[JOB_REPAIRSHOP] = "Construct girls will be quickly repaired here.";
Well, I am still working on strip job, trying to find some texts to steal from other games ::) (If anyone knows where a good place to fish for those, let me know)
Could you perhaps make a pastebin of sections you need writing for? I think it'd be easier for any random person to just look at it and contribute and post their writing here in another pastebin and you could just copy and paste what you like.
txt = txt + '%d clients came to see %s strip and dance in the club! It is a very impressive feat for one girl to attract so many! \n '%(clients, chr.name)
elif int(self.getClients(ilists, brtls, char)*0.6) <= clients <= int(self.getClients(ilists, brtls, char)*0.9):
txt = txt + '%d clients came to see %s strip and dance in the club! This is a very respectable amount of fans for one girls to have! \n '%(clients, chr.name)
elif int(self.getClients(ilists, brtls, char)*0.3) <= clients <= int(self.getClients(ilists, brtls, char)*0.6):
txt = txt + '%d clients came to see %s strip and dance in the club! Not bad concidering the size of brothel and all. \n'%(clients, chr.name)
elif int(self.getClients(ilists, brtls, char)*0.1) <= clients <= int(self.getClients(ilists, brtls, char)*0.3):
txt = txt + "%d clients came to see %s strip, not the most impressive amount but everyone had to start somewhere. \n"%(clients, chr.name)
else:
txt = txt + "Just a couple of clients came to check your girl out, very poor result indeed. "
if chr.status == 'Slave':
if chr.occupation == 'Prostitute':
client = self.create_customer()
if chr.rank < ilists.clientCastes.index(client.caste) - 2:
txt = txt + "Half of costumers have left quickly after realising that this girl (Rank: %d) was some low ranked slave whore. \n"%(chr.rank)
brrepmod = random.randint(10,15) + ilists.clientCastes.index(client.caste)
txt = txt + "Brothel reputation took a hit of %d points \n"%brrepmod
if chr.occupation in ['Stripper', 'Prostitute']:
if chr.strip > 120 and chr.charisma > 120:
tippayout = int(clients * chr.refinement*0.1 * chr.charisma*0.1 + clients*chr.strip*0.2)
txt = txt + "Your girl gave a performance worthy of kings and queens as the whole hall was cheering for her. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%tippayout
hero.add_money(tippayout)
elif 100 <= chr.strip <= 120 and 100 <= chr.charisma <= 120:
tippayout = int(clients * chr.refinement*0.05 * chr.charisma*0.1 + clients*chr.strip*0.15)
txt = txt + "Your girl lost all of her clothing peace by peace as she stripdanced on the floor, the whole hall was cheering for her. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%tippayout
hero.add_money(tippayout)
elif 60 <= chr.strip <= 100 and 60 <= chr.charisma <= 100:
tippayout = int(clients * chr.refinement*0.05 * chr.charisma*0.05 + clients*chr.strip*0.1)
txt = txt + "Your girl lost all of her clothing peace by peace as she stripdanced on the floor, the whole hall was cheering for her. Overall it was a more than decent performance. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%tippayout
hero.add_money(tippayout)
elif 30 <= chr.strip <= 60 and 30 <= chr.charisma <= 60:
tippayout = int(clients * chr.refinement*0.05 * chr.charisma*0.03 + clients*chr.strip*0.05)
txt = txt + "Your girl lost all of her clothing peace by peace as she stripdanced on the floor, some mildly drunk clients cheered for her. Overall it was a decent performance. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%tippayout
hero.add_money(tippayout)
elif 0 <= chr.strip <= 30 and 0 <= chr.charisma <= 30:
tippayout = int(clients * chr.refinement*0.01 * chr.charisma*0.01 + clients*chr.strip*0.03)
txt = txt + "Your girl tripped several times while trying to undress herself as she 'stripdanced' on the floor, only a couple of fans of %s kept quite while a couple of cursewords and calls for a different stripper could be clearly heard. Overall it was a decent performance. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%(tippayout, random.choice(chr.traits))
hero.add_money(tippayout)
elif chr.strip < 30 and chr.charisma > 30:
tippayout = int(clients * chr.refinement*0.02 * chr.charisma*0.03 + clients*chr.strip*0.05)
txt = txt + "Your girl tripped several times while trying to undress herself as she 'stripdanced' on the floor, only a couple of fans of %s kept cheering her on, noone really complained because even if her strip skill was inadequite, she was pretty enough to arouse most men and women in the club. Overall it was a decent performance. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%(tippayout, random.choice(chr.traits))
hero.add_money(tippayout)
elif chr.strip > 30 and chr.charisma < 30:
tippayout = int(clients * chr.refinement*0.02 * chr.charisma*0.02 + clients*chr.strip*0.03)
txt = txt + "Your girl tripped several times while trying to undress herself as she 'stripdanced' on the floor, only a couple of fans of %s kept cheering her on, noone really complained because even if her strip skill was inadequite, she was pretty enough to arouse most men and women in the club. Overall it was a decent performance. She recieved %d of tips and you get to keep 100% of that, her being a slave. \n"%(tippayout, random.choice(chr.traits))
hero.add_money(tippayout)
else:
txt = txt + 'Dev Note: >>>I missed something!<<< Charisma = %d, Strip = %d \n'%(chr.charisma, chr.strip)
# Mod relevant stats:
modchr = random.choice([0,0,0,1])
if modchr > 0:
chr.mod('charisma', 1)
txt = txt + "Your girl charisma increased as she learned a new trick on how to make herself pretty before the show \n"
if dice(35):
chr.mod('strip', 1)
txt = txt + "Striptease skill is up by point! "
if stripskill >= 120:
text1 = "Best result!"
tip1 = clients*chr.strip*best_strip_rate
elif stripskill >= 100:
text1 = "Great result."
tip1 = clients*chr.strip*great_strip_rate
elif stripskill >= 60:
text1 = "Good result."
tip1 = clients*chr.strip*good_strip_rate
elif stripskill >= 30:
text1 = "Fair result."
tip1 = clients*chr.strip*fair_strip_rate
else:
text1 = "Yur grl sux."
tip1 = clients*chr.strip*bad_strip_rate
if charisma >= 120:
text2 = "Best result!"
tip2 = int(clients*charisma*best_charisma_rate)
elif charisma >= 100:
text2 = "Great result."
tip2 = clients*charisma*great_charisma_rate
elif charisma >= 60:
text2 = "Good result."
tip2 = clients*charisma*good_charisma_rate
elif charisma >= 30:
text2 = "Fair result."
tip2 = clients*charisma*fair_charisma_rate
else:
text2 = "Yur grl sux."
tip2 = clients*charisma*bad_charisma_rate
#Then a spot for traits that may effect things (or not)
text3 = ""
tip3 = 0
if trait == 'Big Boobs':
text3 = text3 + " Her big boobs bounced with every step she took."
tip3 = tip3 + big_boob_bonus
if trait == 'Mesmerizing Eyes':
text3 = text3 + " The eyes of her viewers couldn't stray from her dance."
tip3 = tip3 + mez_eye_bonus
final_tip = tip1 + tip2 + tip3
final_text = text1 + text2 + text3 + "\nYou made " + final_tip + " from her dancing.\n(Stripskill " + tip1 +
", Charisma " + tip2 + ", Trait Bonus " + tip3 + ")\n You get to keep XX% of her earnings."
LoL
I am making stuff up as I go so I cannot predict what writing is needed, for stripjob I need something like this for example:
[snip]
If girl is a slave having a whore as occupation, her rank is checked vs a random costumer's caste, if to far below, half of costumers will leave. Text is needed to reflect that.
Than if she is a stripper/whore and a slave, a number of texts are needed to reflect her performance, based on charisma and strip skill for now.
Basically if she was stunningly pretty and skillfull at striptease: 1 text, pretty and ok at striptease: another text and so on. As many options as possible. Also hooks for her being just pretty but sucking at striptease or the opposite, awesome stripper but not the best looker and so on.
About the same thing for Stippers that are free, you do not get to keep all of tips, there will be a bar in girl's profile screen just like in WM, that will determine what you get if free girl's working for you, but texts from Slave part can be reused here I suppose...
Also any amount of text for interactions in city or private interaction in girl's profile based on traits (List of traits will be released with next preAlpha, but most of the general WM traits can be used), occupations(Warrior, Whore, Stripper, Service Girl etc.) and status (Slave, Free, Worker, Peasant, Noble etc.) can be written. Pretty much any decent writing in good English will be added to the game, there is any amount of hooks/forks since a slavegirl will give different answers from noble and whore from warrior and let's say noble courtesan with large boobs will give different answer from a dimwitted peasant service girl... options are limitless, I will write most basic once (borrowing stuff from Simbro 1x every now and again) if noone gets around to it but I will put in any writing on that front done by writers).
why not just put in a ton of place holders for the specific things, pastebin it all, and then people can pastebin back in the specific placeholder. This way you can continue to write up the code and just fill in the placeholders when you get around to it.
something like (placeholder:good strip tease act). then someone could do "(placeholder:good strip tease act): <stripper> performed an exotic dance for her customers. Everyone loved the act and she left the whole room wanting more. " Then write up a bunch of alternates following the same format or whatever and then pastebin it all. You can then just copy and paste the content you want. Not everyone is competent with python, so i feel that this method would be the best to minimize the amount of errors that could occur.
either way its hard to come up with a good coherent script without a blueprint to go off of. Give us a blueprint and several placeholders with general descriptions of what you want. If you just ask us to write up random things, then stitching it all together might make the result somewhat confusing.
I'm just wondering, is it possible to separate those nest if statements into single stat groups and concatenate the strings together after words?
I know this is just a very poorly written pseudo code, but bare with me.Code: [Select]if stripskill >= 120:
text1 = "Best result!"
tip1 = clients*chr.strip*best_strip_rate
elif stripskill >= 100:
text1 = "Great result."
tip1 = clients*chr.strip*great_strip_rate
elif stripskill >= 60:
text1 = "Good result."
tip1 = clients*chr.strip*good_strip_rate
elif stripskill >= 30:
text1 = "Fair result."
tip1 = clients*chr.strip*fair_strip_rate
else:
text1 = "Yur grl sux."
tip1 = clients*chr.strip*bad_strip_rate
if charisma >= 120:
text2 = "Best result!"
tip2 = int(clients*charisma*best_charisma_rate)
elif charisma >= 100:
text2 = "Great result."
tip2 = clients*charisma*great_charisma_rate
elif charisma >= 60:
text2 = "Good result."
tip2 = clients*charisma*good_charisma_rate
elif charisma >= 30:
text2 = "Fair result."
tip2 = clients*charisma*fair_charisma_rate
else:
text2 = "Yur grl sux."
tip2 = clients*charisma*bad_charisma_rate
#Then a spot for traits that may effect things (or not)
text3 = ""
tip3 = 0
if trait == 'Big Boobs':
text3 = text3 + " Her big boobs bounced with every step she took."
tip3 = tip3 + big_boob_bonus
if trait == 'Mesmerizing Eyes':
text3 = text3 + " The eyes of her viewers couldn't stray from her dance."
tip3 = tip3 + mez_eye_bonus
final_tip = tip1 + tip2 + tip3
final_text = text1 + text2 + text3 + "\nYou made " + final_tip + " from her dancing.\n(Stripskill " + tip1 +
", Charisma " + tip2 + ", Trait Bonus " + tip3 + ")\n You get to keep XX% of her earnings."
My reasoning behind this is thus, you could easily add traits, change tip rates, and adjust the text in the strings without having to change every single line when/if something changes. In other words, it would be much easier to manage.
^ What this guy said. Which is actually strangely similar to my previous post.
@dorkosaurus - I think the issue right now is we aren't sure what we want as of yet.
why not just put in a ton of place holders for the specific things, pastebin it all, and then people can pastebin back in the specific placeholder. This way you can continue to write up the code and just fill in the placeholders when you get around to it.
something like (placeholder:good strip tease act). then someone could do "(placeholder:good strip tease act): <stripper> performed an exotic dance for her customers. Everyone loved the act and she left the whole room wanting more. " Then write up a bunch of alternates following the same format or whatever and then pastebin it all. You can then just copy and paste the content you want. Not everyone is competent with python, so i feel that this method would be the best to minimize the amount of errors that could occur.
either way its hard to come up with a good coherent script without a blueprint to go off of. Give us a blueprint and several placeholders with general descriptions of what you want. If you just ask us to write up random things, then stitching it all together might make the result somewhat confusing.
well when you guys figure out what you want make it known and give some clear instructions. I'm sure there are people out there that would like to help but are totally lost in all this technical jargon.
'Her charisma was high, they really liked her' + 'Her skills in stripping leave a lot to be desired')
Ok, let's assume there are multiple major stats that affect an event. one is 1 and the other 98. We should give the event a 'final score' of sorts, which would determine the ending part of the text.
And since the tips are varied, it should even out properly.
But you're right, we wouldn't want:
So, we'll try and want to get it something like:
'Her charisma was high' + ', but ' + 'her skills in stripping were poor' + ', so all in all it was a decent performance.'
I think it best to try and keep it as simple as possible.
if chr.charisma > 120:
txt = txt + 'Her charisma was high'
if chr.strip <= 30:
txt = txt + ' ,but her skills in stripping were poor so all in all it was a decent performance'
Something like this would allow for a couple of generic phrases for each section and they could be stitched together while still maintaining coherence.I agree. Unique text for every trait combination is ambitious, but nearly impracticable idea. We'll probably have WM3 and Alkion completely ready for playing sooner than we'll write such amount of text.
<root>
<variable label = "sexskill" vvar = "0"/>
<variable label = "nonpussyskill" vvar = "0"/>
<variable label = "whoreskill" vvar = "0"/>
<evemath label = "sexskill" arg1 = "#storal" math12="add" arg2="#stanal" math13="add" arg3="stvaginal" math14="div" arg4="3" reroll="sexskill"/>
<evemath label = "nonpussyskill" arg1="#storal" math12="add" arg2="#stanal" math13="div" arg3="2" reroll="nonpussyskill"/>
<evemath label = "whoreskill" arg1 = "#entertaining" math12="add" arg2="#presentation" math13="add" arg3="#stamina" math14="div" arg4="3" reroll="whoreskill"/>
<!-- Send in is whorejob -->
<eve
label = "whorejob"
text = ""
>
<eveeffectcheck label = "sick" exist = "true"/>
<evepost label = "sickjob"/>
</eve>
<!-- does not have class whore, wears chastity belt, low skill -->
<eve
label = "whorejob"
text = "whorejobChastityBad"
>
<!-- requirements -->
<evecheck label = "#class2" check = "ne" vvar = "whore" />
<evecheck label = "#class1" check = "ne" vvar = "whore" />
<eveitemcheck label = "chastity belt" check = "true" girl = "whatgirl" />
<evecheck label = "nonpussyskill" check = "lt" vvar = "advancedskillmin" />
<!-- changes -->
<evechange label = "#gold" mult = "nonpussyskill" percent = ".1" round = "0" reroll="nonpussyskill"/>
<evechange label = "#lust" vvar = "2" />
<evechange label = "#happiness" vvar = "-1" />
<evechangesex label = "blowjob" vvar = "1" />
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<!-- results -->
<evepost label = "classlearnwhore" />
<evepost label = "sickcheck"/>
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
</eve>
<!-- does not have class whore, wears chastity belt, high skill -->
<eve
label = "whorejob"
text = "whorejobChastityGood"
>
<!-- requirements -->
<evecheck label = "#class2" check = "ne" vvar = "whore" />
<evecheck label = "#class1" check = "ne" vvar = "whore" />
<eveitemcheck label = "chastity belt" check = "true" girl = "whatgirl" />
<!-- changes -->
<evechange label = "#gold" mult = "nonpussyskill" percent = ".3" round = "0" reroll="nonpussyskill"/>
<evechange label = "#lust" vvar = "2" />
<evechange label = "#happiness" vvar = "-1" />
<evechangesex label = "blowjob" vvar = "#rand2" />
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<!-- results -->
<evepost label = "classlearnwhore" />
<evepost label = "sickcheck"/>
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
</eve>
<!-- does not have class whore, bad customer -->
<eve
label = "whorejob"
text = "whorejobRookieRough"
>
<!-- requirements -->
<evecheck label = "#class2" check = "ne" vvar = "whore" />
<evecheck label = "#class1" check = "ne" vvar = "whore" />
<evecheck label = "#rand100" check = "lt" vvar = "34"/>
<!-- changes -->
<evechange label = "#gold" mult = "sexskill" percent = ".15" round = "0" reroll="sexskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#happiness" vvar = "-1" />
<evechangesex label = "fucking" vvar = "1" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechangesex label = "blowjob" vvar = "1" iflabel="#rand5" ifcheck="gt" ifvvar="3"/>
<evechangesex label = "anal" vvar = "1" iflabel="#rand5" ifcheck="eq" ifvvar="3"/>
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<evechange label = "#health" vvar = "-10"/>
<!-- results -->
<evepost label = "classlearnwhore" />
<evepost label = "virgincheck" />
<evepost label = "pregnancycheck" />
<evepost label = "sickcheck"/>
<evepost label = "stdsexrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!-- does not have class whore, low skill -->
<eve
label = "whorejob"
text = "whorejobRookieBad"
>
<!-- requirements -->
<evecheck label = "#class2" check = "ne" vvar = "whore" />
<evecheck label = "#class1" check = "ne" vvar = "whore" />
<evecheck label = "sexskill" check = "lt" vvar = "advancedskillmin" />
<!-- changes -->
<evechange label = "#gold" mult = "sexskill" percent = ".15" round = "0" reroll="sexskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#happiness" vvar = "-1" />
<evechangesex label = "fucking" vvar = "1" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechangesex label = "blowjob" vvar = "1" iflabel="#rand5" ifcheck="gt" ifvvar="3"/>
<evechangesex label = "anal" vvar = "1" iflabel="#rand5" ifcheck="eq" ifvvar="3"/>
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<!-- results -->
<evepost label = "classlearnwhore" />
<evepost label = "virgincheck" />
<evepost label = "sickcheck"/>
<evepost label = "pregnancycheck" />
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!-- does not have class whore, high skill -->
<eve
label = "whorejob"
text = "whorejobRookieGood"
>
<!-- requirements -->
<evecheck label = "#class2" check = "ne" vvar = "whore" />
<evecheck label = "#class1" check = "ne" vvar = "whore" />
<!-- changes -->
<evechange label = "#gold" mult = "sexskill" percent = ".35" round = "0" reroll="sexskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#happiness" vvar = "-1" />
<evechangesex label = "fucking" vvar = "#rand2" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechangesex label = "blowjob" vvar = "1"/>
<evechangesex label = "anal" vvar = "#rand2_2" iflabel="#rand5" ifcheck="eq" ifvvar="3"/>
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<!-- results -->
<evepost label = "classlearnwhore" />
<evepost label = "virgincheck" />
<evepost label = "sickcheck"/>
<evepost label = "pregnancycheck" />
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!-- bad customer -->
<eve
label = "whorejob"
text = "whorejobRough"
>
<!-- requirements -->
<evecheck label = "#rand100" check = "gt" vvar = "#entertaining"/>
<evecheck label = "#rand100" check = "gt" vvar = "66"/>
<!-- changes -->
<evechange label = "#gold" mult = "whoreskill" percent = ".3" round = "0" reroll="whoreskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<evechange label = "#health" vvar = "-10"/>
<evechangesex label = "fucking" vvar = "1" iflabel="#rand5" ifcheck="eq" ifvvar="3"/>
<evechangesex label = "blowjob" vvar = "1" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechangesex label = "anal" vvar = "#rand2"/>
<evechange label = "#presentation" vvar = "1" />
<evechange label = "#stamina" vvar = "2" />
<!-- results -->
<evepost label = "virgincheck" />
<evepost label = "sickcheck"/>
<evepost label = "pregnancycheck" />
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!-- low skill -->
<eve
label = "whorejob"
text = "whorejobBad"
>
<!-- requirements -->
<evecheck label = "whoreskill" check = "lt" vvar = "advancedskillmin" />
<!-- changes -->
<evechange label = "#gold" mult = "whoreskill" percent = ".3" round = "0" reroll="whoreskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<evechangesex label = "fucking" vvar = "1" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechangesex label = "blowjob" vvar = "1"/>
<evechangesex label = "anal" vvar = "1" iflabel="#rand5" ifcheck="eq" ifvvar="3"/>
<evechange label = "#entertaining" vvar = "1" />
<evechange label = "#presentation" vvar = "1" />
<evechange label = "#stamina" vvar = "1" />
<!-- results -->
<evepost label = "virgincheck" />
<evepost label = "sickcheck"/>
<evepost label = "pregnancycheck" />
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!-- high skill -->
<eve
label = "whorejob"
text = "whorejobGood"
>
<!-- changes -->
<evechange label = "#gold" mult = "whoreskill" percent = ".6" round = "0" reroll="whoreskill"/>
<evechange label = "#lust" vvar = "-2" />
<evechange label = "#health" check = "sub" vvar = "fatiguework"/>
<evechangesex label = "fucking" vvar = "#rand2" iflabel="#rand5" ifcheck="lt" ifvvar="5"/>
<evechangesex label = "blowjob" vvar = "1"/>
<evechangesex label = "anal" vvar = "#rand2_2" iflabel="#rand5" ifcheck="lt" ifvvar="3"/>
<evechange label = "#entertaining" vvar = "1" />
<evechange label = "#presentation" vvar = "1" />
<evechange label = "#stamina" vvar = "1" />
<!-- results -->
<evepost label = "virgincheck" />
<evepost label = "sickcheck"/>
<evepost label = "pregnancycheck" />
<evepost label = "stdoralrandom" />
<evepost label = "classlearnblowjob" />
<evepost label = "classlearnfucking" />
<evepost label = "classlearnanal" />
</eve>
<!--- needs to be completed and text added -->
</root>
def whoring():
# calculate necessary variables
rand100 = randint(1,100)
rand5 = randint(1,5)
rand2 = randint(1,2)
rand2_2 = randint(1,2)
sexskill = WORKER.oral + WORKER.anal + WORKER.vaginal
if WORKER.has_class("whore"):
whoreskill = WORKER.entertaining + WORKER.presentation + WORKER.stamina
else:
whoreskill = 0
# does not have class whore, bad customer
if rand100 < 34 and not WORKER.has_class("whore"):
PLAYER.gold += int(sexskill * 0.15)
WORKER.lust -= 2
WORKER.happiness -= 1
if rand5 < 3: WORKER.vaginal += 1
if rand5 == 3: WORKER.oral += 1
if rand5 > 3: WORKER.anal += 1
WORKER.fatigue += (FATIGUEWORK + 10)
learn_class("whore")
#TODO do virgin check
#TODO do sick check * 2
return "whorejobRookieRough"
# does not have class whore, low skill
elif sexskill < ADVANCEDSKILLMIN and not WORKER.has_class("whore"):
PLAYER.gold += int(sexskill * 0.15)
WORKER.lust -= 2
WORKER.happiness -= 1
if rand5 < 3: WORKER.vaginal += 1
if rand5 == 3: WORKER.oral += 1
if rand5 > 3: WORKER.anal += 1
WORKER.fatigue += FATIGUEWORK
learn_class("whore")
#TODO do virgin check
#TODO do sick check
return "whorejobRookieBad"
# does not have class whore, high skill
elif not WORKER.has_class("whore"):
PLAYER.gold += int(sexskill * 0.35)
WORKER.lust -= 2
WORKER.happiness -= 1
if rand5 < 3: WORKER.vaginal += rand2
WORKER.oral += 1
if rand5 == 3: WORKER.anal += rand2
WORKER.fatigue += FATIGUEWORK
learn_class("whore")
#TODO do virgin check
#TODO do sick check
return "whorejobRookieGood"
# bad customer
elif rand100 > WORKER.entertaining and rand100 > 66:
PLAYER.gold += int(whoreskill * 0.35)
WORKER.lust -= 2
if rand5 == 3: WORKER.vaginal += 1
if rand5 < 3: WORKER.oral += 1
WORKER.anal += rand2
WORKER.presentation += 1
WORKER.stamina += 2
WORKER.fatigue += (FATIGUEWORK + 10)
#TODO do virgin check
#TODO do sick check * 2
return "whorejobRough"
# low skill
elif whoreskill < ADVANCEDSKILLMIN:
PLAYER.gold += int(whoreskill * 0.35)
WORKER.lust -= 2
if rand5 < 3: WORKER.vaginal += 1
WORKER.oral += 1
if rand5 == 3: WORKER.anal += 1
WORKER.entertaining += 1
WORKER.presentation += 1
WORKER.stamina += 1
WORKER.fatigue += (FATIGUEWORK)
#TODO do virgin check
#TODO do sick check
return "whorejobBad"
# high skill
else:
PLAYER.gold += int(whoreskill * 0.6)
WORKER.lust -= 2
if rand5 < 5: WORKER.vaginal += rand2
WORKER.oral += 1
if rand5 < 3: WORKER.anal += rand2_2
WORKER.entertaining += 1
WORKER.presentation += 1
WORKER.stamina += 1
WORKER.fatigue += (FATIGUEWORK)
#TODO do virgin check
#TODO do sick check
return "whorejobGood"
At least one of you knows my own pet project, Pytherworld.
Both systems are more complicated and more powerful than your current system and both solve the problem you are discussing here.
@Xela
The __setattr__ and __getattr__ methods of Pytherworld's Character class exist to keept the code in these job scripts as simple as this:
want to check if the working character is happy? write "if WORKER.happiness > 75:"
want to increase the fatigue of the working character by 2? write "WORKER.fatigue += 2"
Which is a lot easier to achieve comparing two stats at the same time, not separately since telling the game when to put 'but', when to use 'and' and etc. will make code 'messy' once again:Code: [Select]if chr.charisma > 120:
txt = txt + 'Her charisma was high'
if chr.strip <= 30:
txt = txt + ' ,but her skills in stripping were poor so all in all it was a decent performance'
I doubt that it is possible to create 'clean' code for multiple stat dependencies. Also if we use 'and' in conditions and not two 'if' we can use one unbroken string making it A LOT EASIER for writers with skills to create texts like one I've attached (from Otherworld) instead of 'Low charisma - High Libido - Average result' robotic responses.
Though, I do have to say, I like how clean and easy to read rudistoned's code is. Because even I could figure out what was going on there, however I didn't realize the texts in that game were mod-able or that there were really only 6 possible outcomes for that job. (though I suppose I did learn that Xela doesn't want the texts to be moddable in this current one)
Yeah, I went through most of Pytherworld, code structure does look lovely!
I don't want those texts to be 'easily' moddable, I will simply add all good/great texts that writers will come up with as options to be randomly chosen from. Otherwise, all events, quests and interactions will be moddable in Pytfall.
well when ever you get around to it, write up a format on what you want, and give some clear instructions on what you would like. Then people that can help could just follow that guideline and pastebin you stuff when we feel like it. Don't feel as if you need to slow down writing up your code and stuff due to missing written content, that's what other people are here for and we're willing to help if you ask.
Thanks, I'll try to get it done by the end of the week (two weeks tops), at least to the point where I can make a decent pastebin (I've already registered for an account).
BS by the way, it isn't more powerful and only maybe more complicated.I apologize, Pytherworld's job scripts are indeed less powerful than PyTFalls approach since they can only manipulate those parts of the game the game exposes to them. Just remember, with great power comes great responsibility.
Note that for all that code you have 6 possible outcomes in a game where there are no traits, no social status and you simply add stats into a single variable to check against that, limiting options for responses.6 possible outcomes of job descriptions, that's true. The main purpose of this job script is to modify the girl's stats based on what she did and how well she did it. Also the customer has a little influence on the outcome. That code was never meant to produce a large variety of job description outcomes. Instead, it produces a large variety of stat increases, so you don't know exactly what a girl will learn during one job.
if (char.has_class("stripper") or
char.charisma > 75 and char.happiness> 75) or
char.dancing > 75):
As for power there is not one damn thing you can swing with that approach that cannot be done with strip method of Brothel classWell, what about moddability ;-)
I expect that there is a lot less control over the content of those texts in PW than in PytFall.You are right. I never put work into the descriptions so far, I just load them from Otherworlds XML and display them. Currently, there is no control over the contents at all, except for statically editing the XML files of course.
As opposed to:Yes. Calling the mod method can achieve the same things but is not as easy to understand, read, and write.
"chr.mod('fatigue', 2) or chr.fatigue += 2"?
Yes. Calling the mod method can achieve the same things but is not as easy to understand, read, and write.
Adding 2 to the fatigue attribute can not check if this would raise the attribute above it's maximum, or do anything else that needs to be done if this attribute changes, unless you modify the __setattr__ method of chr's type (or you turn fatigue into a property, but don't do that, I've been there and it wasn't pretty).
Pytherworld does have social status, implemented via social game classes, but it's not used much currently.
Pytherworld does not have traits, but I don't see the need for them currently, although they are easy to add. Matching images to how girls look is accomplished via Pytherworlds intricate tagging system. In that context, your trait and my tag are pretty much the same - a keyword describing looks.
In any case, I did otherwise manage to adapt WM's approach of House Percentage, creating my first bar in RenPy!That reminds me, this bar doesn't need such high sensitivity, just like fee for an entrance. I think bar with step 10 or at least 5 would be better, if you have time for such purely cosmetic things.
That reminds me, this bar doesn't need such high sensitivity, just like fee for an entrance. I think bar with step 10 or at least 5 would be better, if you have time for such purely cosmetic things.
class Girl(object):
def __init__(self):
self.__dict__["stats"] = {"health":100, "fatigue":0, "charisma":5}
def __getattr__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
if name in self.stats:
# get a gamestat
val = self.stats[name]
elif name in self.__dict__:
# get a regular attribute of this class
val = self.__dict__[name]
else:
# raise an error if name is neither a gamestat nor an attribute
msg = "'%s' is neither a gamestat nor an attribute of %s"
raise AttributeError(msg % (name, self.__class__.__name__))
return val
def __setattr__(self, name, value):
'''Assigns a value to a game attribute or a python attribute.
'''
if name in self.stats:
# set a gamestat
self.stats[name] = value
else:
# set a regular attribute of this class
self.__dict__[name] = value
@Xela
Yes, it is definitely possible to keep the default behaviour of the character class for regular attributes and modify it for stats. That's what I did in Pytherworld. The most simple way to do it is like this:Code: [Select]class Girl(object):
def __init__(self):
self.__dict__["stats"] = {"health":100, "fatigue":0, "charisma":5}
def __getattr__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
if name in self.stats:
# get a gamestat
val = self.stats[name]
elif name in self.__dict__:
# get a regular attribute of this class
val = self.__dict__[name]
else:
# raise an error if name is neither a gamestat nor an attribute
msg = "'%s' is neither a gamestat nor an attribute of %s"
raise AttributeError(msg % (name, self.__class__.__name__))
return val
def __setattr__(self, name, value):
'''Assigns a value to a game attribute or a python attribute.
'''
if name in self.stats:
# set a gamestat
self.stats[name] = value
else:
# set a regular attribute of this class
self.__dict__[name] = value
The code above works, so you could drop it into the sGirl class if you want to. If you do, just make sure the definition of the stats dictionary is the first line in the __init__ function, or you'll get infinite recursion.
class Girl(object):
def __init__(self):
self.__dict__["stats"] = {"List":["fatigue","charisma","etc"]}
def __getattr__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
if name in self.stats['List']:
# get a gamestat
val = self.__dict__[name]
# but here we can do cool stuff to stats!
elif name in self.__dict__:
# get a regular attribute of this class
val = self.__dict__[name]
else:
# raise an error if name is neither a gamestat nor an attribute
msg = "'%s' is neither a gamestat nor an attribute of %s"
raise AttributeError(msg % (name, self.__class__.__name__))
return val
char.health = 100
is equivalent to char.__setattr__("health", 100)
current_health = char.health
is equivalent to current_health = char.__getattr__("health")
self.name = "unnamed"
which Python will translate to self.__setattr__("name", "unnamed")
if name in self.stats:
which Python will translate to if name in self.__getattr__("stats")
if name in self.stats:
, triggering yet another call to __getattr__, which also tries to access the stats attribute, triggering yet another call to __getattr__, ...I'm not really sure what the problem is you are describing, but maybe you will solve it yourself if I explain a litte bit what the code above does.
Basically, Python syntax is just a nice way to call all those special methods. WritingCode: [Select]char.health = 100
is equivalent toCode: [Select]char.__setattr__("health", 100)
Likewise, writingCode: [Select]current_health = char.health
is equivalent toCode: [Select]current_health = char.__getattr__("health")
So, keeping that in mind, look at the constructor (__init__ method) of sGirl. I'm sure, somewhere you define an attribute, eg.Code: [Select]self.name = "unnamed"
which Python will translate toCode: [Select]self.__setattr__("name", "unnamed")
This call to __setattr__ will execute the lineCode: [Select]if name in self.stats:
which Python will translate toCode: [Select]if name in self.__getattr__("stats")
Now __getattr__ is called, which also tries to access the stats attribute in the lineCode: [Select]if name in self.stats:
, triggering yet another call to __getattr__, which also tries to access the stats attribute, triggering yet another call to __getattr__, ...
et voilà, infinite recursion.
If however the first line of the constructor defines the stats attribute by accessing the internal dictionary of the instance, self.__dict__, subsequent attribute access via self.stats will work. This works because self.__dict__ is NOT translated to self.__getattr__("__dict__"), but instead just returns the internal dictionary of the instance, which contains its namespace.
It will prolly be more useful if you explain what causes recursionI actually just did in my previous post...
Will this code cause infinite recursions?Easiest way to find out is copy&paste the class definition into IDLE (comes preinstalled with your Python distribution, except for some Linux distris) and create an instance of the class ;-)
def mod(self,par,value):
oldval = getattr(self, par)
newval = oldval += value
setattr(self, par, newval)
I actually just did in my previous post...
Easiest way to find out is copy&paste the class definition into IDLE (comes preinstalled with your Python distribution, except for some Linux distris) and create an instance of the class ;-)
Without defining a __setattr__ it's hard, but still possible, to cause infinite recursion.
Concerning the Structure methods:
These methods should not be there anyway because reimplementing the wheel is bad and Python already provides nice mechanisms to do that.
Instead of char.has(par) write hasattr(char, par)
Instead of char.set(par, value) write setattr(char, par, value), or just char.dancing = value if you don't need dynamic access
Instead of char.mod(par, value) write char.dancing += value
If you often need to add a value to a class attribute and you only know the name of the attribute at runtime (dynamic attribute access), you can reimplement the mod method as follows:Code: [Select]def mod(self,par,value):
oldval = getattr(self, par)
newval = oldval += value
setattr(self, par, newval)
def __getattr__(self, key):
if key in StatList:
if self.__dict__['stats'][key] + self.__dict__['imod'][key] > self.__dict__['max'][key]:
val = self.__dict__['max'][key]
elif self.__dict__['stats'][key] + self.__dict__['imod'][key] < self.__dict__['min'][key]:
val = self.__dict__['min'][key]
else:
val = self.__dict__['stats'][key] + self.__dict__['imod'][key]
else:
msg = "'%s' is neither a gamestat nor an attribute of %s"
raise AttributeError(msg % (key, self.__class__.__name__))
return val
def __setattr__(self, key, value):
if key in StatList:
if self.__dict__['imod'][key] + value > self.__dict__['max'][key]:
if value > self.__dict__['max'][key]:
self.__dict__['stats'][key] = self.__dict__['max'][key]
return
if value < 0:
if self.__dict__['imod'][key] + value < self.__dict__['min'][key]:
if value < self.__dict__['min'][key]:
self.__dict__['stats'][key] = self.__dict__['min'][key]
return
self.__dict__['stats'][key] = value
else:
self.__dict__[key] = value
Code: [Select]elif name in self.__dict__:
# get a regular attribute of this class
val = self.__dict__[name]
do_nothing():
pass
class Girl(object):
def __init__(self):
statsdict = {"health":100, "fatigue":0, "charisma":5}
object.__setattr__(self, "stats", statsdict)
object.__init__(self)
def __getattribute__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
statsdict = object.__getattribute__(self, "stats")
if name in statsdict:
# get a gamestat
val = statsdict[name]
else:
# get a regular attribute or raise an error
val = object.__getattribute__(self, name)
return val
def __setattr__(self, name, value):
'''Assigns a value to a game attribute or a python attribute.
'''
if name in self.stats:
# set a gamestat
self.stats[name] = value
else:
# set a regular attribute
object.__setattr__(self, name, value)
@XelaYou're right. Well, at least it doesn't break anything :D
EDIT: After rereading the docs on attribute access (http://docs.python.org/2/reference/datamodel.html (http://docs.python.org/2/reference/datamodel.html)), I believe that the following is a less error-prone implementation of the desired behaviour. The desired behaviour is to intercept any attribute access to character stats and keep the behaviour unchanged for any other attribute. With the previous implementation, which used __getattr__, a character stat could only be accessed if the instance, its class or any superclass did not provide an attribute with the same name.Code: [Select]class Girl(object):
@Xela
def __init__(self):
statsdict = {"health":100, "fatigue":0, "charisma":5}
object.__setattr__(self, "stats", statsdict)
object.__init__(self)
def __getattribute__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
statsdict = object.__getattribute__(self, "stats")
if name in statsdict:
# get a gamestat
val = statsdict[name]
else:
# get a regular attribute or raise an error
val = object.__getattribute__(self, name)
return val
def __setattr__(self, name, value):
'''Assigns a value to a game attribute or a python attribute.
'''
if name in self.stats:
# set a gamestat
self.stats[name] = value
else:
# set a regular attribute
object.__setattr__(self, name, value)
Should you want to adapt this code for PyTFall, please note that you should replace any reference to object with the superclass of your sGirl class: Structure.
def __getattribute__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
try:
statsdict = object.__getattribute__(self, "stats")
except AttributeError:
# must create self.stats if it does not yet exist
statsdict = {"health":100, "fatigue":0, "charisma":5}
object.__setattr__(self, "stats", statsdict)
statsdict = object.__getattribute__(self, "stats")
if name in statsdict:
# get a gamestat
val = statsdict[name]
else:
# get a regular attribute or raise an error
val = object.__getattribute__(self, name)
return val
Sounds like the XML loader does not call the constructor. I had the same problem because pickle doesn't call the constructor either and after unpickling an instance of my character class it had no stats attribute. I think you can avoid the error message like this and I also think it fixes the problem, but I never made sure it really does. Btw, if __getattribute__ is defined like this, the constructor does not need to have, and should not have the initial values for the statsdict.Code: [Select]def __getattribute__(self, name):
'''Returns a value for a game attribute or a python attribute.
'''
try:
statsdict = object.__getattribute__(self, "stats")
except AttributeError:
# must create self.stats if it does not yet exist
statsdict = {"health":100, "fatigue":0, "charisma":5}
object.__setattr__(self, "stats", statsdict)
statsdict = object.__getattribute__(self, "stats")
if name in statsdict:
# get a gamestat
val = statsdict[name]
else:
# get a regular attribute or raise an error
val = object.__getattribute__(self, name)
return val
Service Girl is an occupation (Class)Nice to hear that you decided to add such class. I was just thinking about characters which don't belong to warriors(=able to fight) or prostututes(=sexually liberated or don't care at all).
Nice to hear that you decided to add such class. I was just thinking about characters which don't belong to warriors(=able to fight) or prostututes(=sexually liberated or don't care at all).
Today I have nothing to do, so I decided to add a couple of traits :)
Xela, are you going to use random girls eventually? I ask because traits like Your Daughter and Incest will be hard to use without them.
I see. They'll wait until pregnancy support then, if game actually will have it. It was somewhat fun to "breed" characters with good traits combinations in wm though.
We don't have pregnancy yet either and I've never used random girls in WM. In any case, there is nothing in PyTFall preventing use of random girls as far as I can tell but if you want to add those traits, make a separate file for the advanced version because SimBro version shouldn't have those by design.
Just made the fastest ban ever, spambot barely left a message.I'm afraid they'll never give up :(
I'm afraid they'll never give up :(
How are you going to handle slavery? Do you need corresponding "Slave" trait like in wm?
Perhaps keep it simple and use pregnancy as a means of unlocking higher grade characters from the game? Any girl might have a chance of pregnancy that results in a child but has no actual use (see: NPC) for the player while the pregnancy of certain girls to be discovered during play unlocks those special characters (as daughters) after a set time frame?
Nope, we already have status in .xmlYeah, I know. I mean possible penalties to character and maybe upkeep. Are they coded within status as well?
Yeah, I know. I mean possible penalties to character and maybe upkeep. Are they coded within status as well?
2) Idea: For warrior types, except keeping unruly costumers under control, what about simple sponsoring of quests for the SimBro version. Basically you give an amount of money to a girl to cover travel expenses, equipment and so on and in return she goes on quest for a number of days. She can either return emptyhanded = you get nothing, or she can fulfill the mission, meaning you get back your investment and something on top. Can also be a part of missions set. That shouldn't be to difficult to program and will solve the issue on what to do with warriors before the Arena in WMlike version.
1) Do we need categories for Service Jobs (Bar-Tender, Club Waitress, Cleaner.I guess they could be united in the one Service job, but with at least basic self-organization. I mean game should analyze traits of all service girls.
2) She can either return emptyhanded = you get nothing, or she can fulfill the mission, meaning you get back your investment and something on top. Can also be a part of missions setI don't see any real difference from the wm dungeon exploration. They might as well find some item at the mission, or capture some girl - when we'll have a decent item system and corresponding characters.
3) I want to handle missing picture categories by revering to profile category, a different approach is having a number of generic pics without facesYup, WM has such faceless pics. Personally, I would prefer profile pics, generic usually seem out of place to me.
4) SFW (Safe for work). Do we need such a option?Unless you going to sell the game via mobile platforms app stores, I think we don't need it :D
5) Storyline and endings. If you have any ideas for objectives for the game as a whole, put those in writing, maybe with some texts. I do not mean missions system here. What is needed: Story, simple Plot and a number of endings based on player's actions.I have a couple of ideas actually. I'll write it tomorrow, it's getting late already.
I'm thinking that there should probably be an option to send multiple people to the mission for bonus success. to give it more depth, perhaps factor in character stats for the amount of loot each person can haul back.Good idea.
1) Do we need categories for Service Jobs (Bar-Tender, Club Waitress, Cleaner. (I am thinking about leaving LapDancer for WMlike version))
2) Idea: For warrior types, except keeping unruly costumers under control, what about simple sponsoring of quests for the SimBro version. Basically you give an amount of money to a girl to cover travel expenses, equipment and so on and in return she goes on quest for a number of days. She can either return emptyhanded = you get nothing, or she can fulfill the mission, meaning you get back your investment and something on top. Can also be a part of missions set. That shouldn't be to difficult to program and will solve the issue on what to do with warriors before the Arena in WMlike version.
3) I want to handle missing picture categories by revering to profile category, a different approach is having a number of generic pics without faces and fall back to that (for example, if there is no pic in strip category, game can either show a generic strip pic or a pic from profile category of a girl). Personally I would vote for profile pics but we can go either way or even both ways, simply allowing to choose preferred way in gameoptions.
4) SFW (Safe for work). Do we need such a option? I vote against cause while it is easy to achieve with pics, it is very bothersome to get here with texts.
5) Storyline and endings. If you have any ideas for objectives for the game as a whole, put those in writing, maybe with some texts. I do not mean missions system here. What is needed: Story, simple Plot and a number of endings based on player's actions. Not to complex but not to simple either. And if possible futureproof, so not to much would have to be changed in WM version.
I am working on Service Job, trying to make sure it's smart and not counter intuitive. After that is finished, security job and schools and any other jobs we deem necessary for the SimBro version. With that done, I'll start making the game better moddable. I cannot give any timeframes cause there is no way of knowing how much time can be put into the code.
wow that actually sounds like a really good idea. it would remove some tedious battle mechanic that wouldn't really add to the gameplay while offering a wider spectrum of management simulation. I think there is a lot of room for improvement on this idea though. Perhaps factor in loyalty to see if they run away?
I'm thinking that there should probably be an option to send multiple people to the mission for bonus success. to give it more depth, perhaps factor in character stats for the amount of loot each person can haul back. So needing to consider sending multiple people on the same mission for maximum haul vs sending them out on multiple missions would make some meaningful choices between exp rate and loot.
I guess they could be united in the one Service job, but with at least basic self-organization. I mean game should analyze traits of all service girls.
Let's say player has 2 characters with different traits, first one is good for cleaning and second one is good for waitress job. In such case building is clean and customers have their drinks. However, if neither is good for cleaning and both are good for waitress, then building is not as clean as it could be, but customers in bar are very happy. Or something like this.
I don't see any real difference from the wm dungeon exploration. They might as well find some item at the mission, or capture some girl - when we'll have a decent item system and corresponding characters.
Yup, WM has such faceless pics. Personally, I would prefer profile pics, generic usually seem out of place to me.
Unless you going to sell the game via mobile platforms app stores, I think we don't need it :D
I have a couple of ideas actually. I'll write it tomorrow, it's getting late already.
In Pytfall it would made a bit more sense:I see. Yeah, sounds like a good idea to me.
- You sponsor the quest, investing money in it (so she could buy necessary equipment and provisions).
- You can organize a party.
- These quests can take longer than one turn.
- You can choose the difficulty of a quest.
I'd say yes, but I'd also want to keep the 'general category' as well, for those players who just want a certain girl to just take care of whatever. Let them choose a specific or over-head type commands and the game can sort through who goes where during the 'next day' function.
Example, girl A has orders to Clean, girl B has orders to Clean, girl C has order to Bartend, girl D has orders to General Service. If this particular brothel serves food as well, we can assume girl D will be placed into the empty role (waitressing), if it doesn't and girl B refuses to clean, the game may decide to place girl D in girl B's cleaning role. Etc
This way, players don't have to focus on who is where and doing what as far as services go, but for whatever reason (maybe because of a trait or skill) the player definitely wants girl X to perform job Y every time. This will allow that as well.
I really like this idea. It reminds me of FFTA (for the GBA) where you can send your peeps on little missions. Perhaps these 'mini missions' can be considered the 'whoring' equivalent. Maybe ....
Prostitute ----------- Warrior
Whoring Mini Mission
Services Security/Bouncer
Advertising Patrolling Streets (maybe lowers chances of rowdy customers and occasionally fights tentacle monsters/whatever)
Yes to game options, yes to both.
No. If you want to play this at work, you are probably comfortable enough to watch porn at work.
I'll try to throw one by you real quick.
No worries. No rush. No stress. Take all the time you need. I'll help where I can.
I see. Yeah, sounds like a good idea to me.
Talking about equipment reminds me, player shouldn't have free access to free girls inventory. He may offer some item or ask for some item, but it should be up to girl to accept a gift or give item to player depending on disposition, status and so on. Of course, slaves are different story.
So, about the storyline. I would like to avoid such usual plot for brothel games as "competitors killed MC father having left him with one brothel with one old ugly whore and astronomical debts, let's give them the symmetric answer". I don't say we shouldn't use such ideas at all, but I'd like to have a little more serious story.
I have two ideas, which can be used together or separately. First one is conflict with slaves, which, as we know, have provoked war in the past. So player could enslave free girls, help slave traders and so on, or give freedom to slaves, help their underground opposition, secretly train them as warriors and so on. I guess we need some kind of stat reflecting such player's deeds.
In order to not complicate gameplay, just using slaves at some jobs shouldn't influence it, it should be neutral deed.
Second idea is to search for prewar high magic and technologies, i.e. unique first class items and even artificial girls with good stats. Here we actually can use "dead father" idea, but as scientist studying prewar artifacts and killed for unknown reason (maybe by government), not as just some lame brothel manager. Competitors should look for them too.
If you like one or both of these ideas, I will expand them.
Advanced storyline makes a Simulation game look more and more like an RPG. Even worse, players who may just want to sim, are forced reading long plot lines.Really? They don't seem so advanced to me. After all, you asked for "sketches of some texts, events and maybe even NPC", my little ideas are nothing in comparison to such things :)
Really? They don't seem so advanced to me. After all, you asked for "sketches of some texts, events and maybe even NPC", my little ideas are nothing in comparison to such things :)
With the first one player just decides how many slaves and free girls he is going to use, or just ignore it and get neutral "nothing has changed" ending. With the price of one additional, maybe hidden stat.
With the second one player just need to collect a certain amount of any techs (=good items and unique girls, nothing new here, you will do such things anyway) and maybe hide and protect them from government or just some bad people. In advanced version we can use additional Scientist job for smart characters to study prewar techs. The more techs you successfully obtain (maybe within optional time limit) and the less techs obtained by enemies, the better ending you have.
In other words, plots have potential for making game more rpg-like, but it's unnecessary.
OK, how about mixing these plots? One thing is player does or doesn't support slavery, second is does he has enough power (=prewar techs=artefacts and girls) to actually do something about it.
This will give us as many endings as we need.
One more thing, I doubt I'm able to write big enough English text without any mistakes, so I guess we need corrector.
LoL @ 'corrector'Yup, that's exactly what I'm talking about :D
Proofreader or editor :)
Yup, that's exactly what I'm talking about :D
I'll think about the game story for a day or two, meanwhile someone may suggest a much better plot, who knows.
I'll start with the easiest part, dance. Check my folder in dropbox.
what about this generic storyline:
main character just graduated from business school and is now in the process of starting their own business. Takes a loan to start it all up. Eventually, main character's shop becomes a pretty good adventurer's item shop.
Turns out the loan was a really bad loan and the gangs starts extorting the main character for money. Being forced to expand his or her business to cover different niches, main character hires "workers" for a bar and brothel expansion to fill a niche that is missing in the local area.
Then here is where the player takes over, goals are to meet the minimum extortion costs per month that rises at a linear rate while trying to balance training/gearing up warrior girls to fight off the gangs or whatever.
The player is in charge of hiring and managing workers for the itemshop/brothel while trying to fund for training and gear for warrior type girls.
This would make sense for warrior type classes to actually stick around in a brothel since the main character is offering paid training and discounts on equipment while also factoring in why he or she would actually want to train warriors for their brothel. You can further expand gameplay by simulating an item shop.
Perhaps hiring girls to fabricate generic items that slowly sells overtime, and placing items/loot hauled from warrior's quests to be sold. Obviously the player needs to buy supplies to fabricate items, and need to supply the warriors for the quests. This would prevent the player from becoming instantly rich after a really successful random quest run and would slow the inflow of cash to make quest running not instantly profitable.
Bit clumsy.
Also would require an advanced items system for the SimBro version.
hmmm why not have an advanced item system? Maybe sometime later down the line when all the other mechanics are done?
Because the plan was to stick with the original SimBrothel design with new features. If advanced items system is installed, I doubt that we even need a simbro version then because it will open an avenue to insane amount of interesting quests and plotlines. I want a simple game first, more advanced stuff later.
oh i guess i should have read up on what the plan was. Silly me for skipping around on the thread then.
I've found some pics for combat school.
What do you mean by service school? Maids, waitresses and so on?
Schools are done. Let me know if you need more pics.
You have to explain jobs representing pics, I'm not sure I understand what do you need. Why and how to use such pics instead of buttons with text in the first place?
Well, it's not hard to find some cleaning, resting and other icons for sure. Check icons folder in my dropbox folder for some examples.
Let me know if you won't have a choice but to use icons. Those are just examples, I will find a better ones then.
Well, I don't know how are you going to build further interface. Where are you going to put icons? I think we definitely shouldn't use only icons without any text, in Alkion there're many buttons without text, and I still didn't get used to them.
On the subject of a generic story: How about having earned / inherited (or something similar) a license allowing the player to open and operate a brothel.
It could give the free whores another reason not to work on the streets since they don't have to look after themselves and pay protection money to gangs or police since they are working for your legal Brothel, instead of working in a gray area with a pretty shady reputation sorrounding them.
Also assuming that the town the game is the cultural and political center of the country/region a lot of girls could come there trying to become the maid, mistress or bodyguard (or master of the arena) of the cream of society only to find out that it isn't all that easy to get to them, cue the player providing jobs and maybe a way up the social ladder for them.
(just spouting ideas here)
I am not the best out there with the english language but I would be willing to look over peoples texts / writing small stuff if I find the time for it.
On the subject of a generic story: How about having earned / inherited (or something similar) a license allowing the player to open and operate a brothel.Yeah, that's a good explanation why MC bothers with brothel but not something else, regardless of main plot. The question is how he earned it in the first place. I would rather not make another dead-father-brothel-manager, it's an old and boring story :)
I am not the best out there with the english language but I would be willing to look over peoples texts / writing small stuff if I find the time for it.I would appreciate that.
What kind of encounters do you think are interesting?Well, according to game setting, "failed slave revolt taking place in the country that was squashed but with very significant losses so now slaves are not allowed to train in battle magic or combat".
Hey guys,
congratulations on your progress!
I'm interested in the quest/mission system for the warriors and I'd like to code the logic for it. Since nobody mentioned developing it, I suppose work has not started on it yet? I'd hate to duplicate something that already exists.
Goal
Develop a system that allows one or more characters to go on a quest, face several encounters and return with a reward if all obstacles can be overcome.
New classes
Quest
Represents a series of encounters that a party of characters has to deal with to earn the reward.
The quest should have a cost to pay so it can be started. It should also decide which characters in the party face a particular encounter and should define if the reward for successful completion of the quest is just the sum of the encounter rewards or something else.
Encounter
Represents an obstacle questing characters have to overcome. Possible obstacles are monsters to fight, traps to avoid, secure locations to break in, natural hazards to brave or whatever else fits the setting.
An encounter should contain some kind of test, e.g. skill checks, that determines the outcome of the encounter. It should also apply the effects of the outcome to the characters, e.g. reduce character health if they've been in a fight.
It may also provide a reward for success.
Interfaces
This system would need to interact with:
the character instances to apply encounter outcomes and to perform skill checks
anything else?
Questions
* How do skill checks work in PyTFall? In Otherworld, the most basic way to see if a maid cooked a nice meal is to generate a random number between 1 and 100 and check if it is lower than the maid's cooking skill.
Questions
* Is the character class already stable, or is it changing often?
Questions
* What kind of encounters do you think are interesting?
What do you think? IMHO, this system is quite scalable, meaning it can simulate both simple and complex quests. Just to be clear, this is not meant to be a mini-RPG. A fight can be as simple as checking a warriors martial prowess (however PyTFall measures that) against a difficulty. Nevertheless, if someone decides to expand warrior management into a mini-RPG, this system will be able to accomodate that via more complex encounters, e.g. changing the fight I mentioned before into several rounds of attack and defense rolls or maybe even powering up the battle engine.
For now, I'd start with the logic calculating encounter outcomes and rewards. The GUI needed to make use of the quest system will probably be created by someone else, because I don't really want to learn how to code GUIs in RenPy. Possible additions would be texts describing what happened on the quest to the player (if that is even desirable).
Well, according to game setting, "failed slave revolt taking place in the country that was squashed but with very significant losses so now slaves are not allowed to train in battle magic or combat".
Main plot probably will have something to do with deciding between government and slaves underground, and looking for prewar techs to have enough power.
So if you ask me, things like raiding some slave camp or protect it, or looking for techs in prewar buildings ruins (with traps and locks = checks for agility and intelligence) and so on are welcomed. These are for high-level parties, low-level simple things like a randomly discovered cave with some monsters and gold are needed too.
I would take a different approach and create number of meals and required skill girl needs to cook those properlyThat's not the most basic way I was asking for ;-)
Also don't forget that there are other more urgent game-elements I offered you as options that need to be coded.I did not forget, it's just that those are mostly content-heavy and I'm not good at developing content. I'd rather develop game mechanics. Apart from the content-heavy choices, as far as I remember, the others were tied to this game really closely and I'd rather develop something more modular, so it might be of use somewhere else too. The arena system probably has many GUI elements and I also never played WM long enough to find out about the arena. I'd have to familiarize myself with that first I suppose. The mission system sounded most interesting.
Xela, if I understand correctly, rudistoned talkes about advanced mission system for warriors and parties of warriors, not Tifa-like quests with participation of player. You talked about them yourself in reply #268.
You also might want to take a look at Brothel S.im mentioned in other games thread. It has some fresh ideas, including stats and mission system.
I accidentally noticed that CherryWood has many great pics for schools in his folder. I write this post just in case if I'm the only one who have noticed them.
I'm sorry, I'm here often, but because nothing I'm doing is related to jobs or other topics that were discussed, I didn't post for a while.
In last two weeks, I was interested in creating some renpy scenes or town locations, but I abandoned that until it will be more clear how main parts of game will work. So only I have is pictures for few new girls and backgrounds that I gathered, but that's nothing helpful now...
Now I'm working on texts for generic girlmeet interactions. I'm trying to sort them by status and traits, because I really like that idea. I will need to discuss that with all or you a bit, because there are some issues that needs to be decided, but I expect it will take at least a week before I can get it to a presentable state.
I'm trying to sort them by status and traits, because I really like that idea.Btw, feel free to add traits if you think I missed any good ones.
Cool, are you planning to put those in game yourself or are you making a text file?I'm still within text files and excel tabs now, but I'm willing to put it all into renpy code afterwards. It look like a repetitive work, so I should be able to do that if someone help me with first example.
trap = TrapEncounter()
trap.difficulty = 4
trap.characters = [warrior1, warrior2]
success = trap.run_encounter()
class BaseEncounter(object):
'''Represents a problem questing characters have to master.
Difficulty
The difficulty describes how hard it is to master this encounter. It ranges
from 'very easy' = 1 to 'very hard' = 5.
Mastering the encounter
In order to master the encounter, the characters must pass a number of
encounter checks equal to the difficulty, e.g. one check for a very easy
encounter or three checks for a normal encounter. If they succeed within
five tries, they master the encounter. If the characters fail at
6 - difficulty encounter checks, e.g. 2 for a hard enounter, they fail the
encounter and collectively suffer consequences.
The encounter check
A random number between 0 and 99 is rolled. If it is lower than the
capability of the character, the check succeeds.
Probability of failure at various capabilities and difficulties
10% capability "Rookie"
'very easy', one successful check needed to master encounter
probability to fail one check: 1 - 0.1 = 0.9
probability to fail all five: 0.9 * 0.9 * 0.9 * 0.9 * 0.9 = 0.59
Rookies succeed at very easy encounters in 41 out of 100 tries.
'very hard', five successful checks needed to master encounter
probability to succeed on one check: 0.1
probability to master all five: 0.1 * 0.1 * 0.1 * 0.1 * 0.1 =0.00001
Rookies succeed at very hard encounters in 1 out of 10000 tries.
90% capability "Master"
'very easy', one successful check needed to master encounter
probability to fail one check: 1 - 0.9 = 0.1
probability to fail all five: 0.1 * 0.1 * 0.1 * 0.1 * 0.1 = 0.00001
Masters succeed at very easy encounters in 9999 out of 10000 tries.
'very hard', five successful checks needed to master encounter
probability to succeed on one check: 0.9
probability to master all five: 0.9 * 0.9 * 0.9 * 0.9 * 0.9 = 0.59
Masters succeed at very hard encounters in 59 out of 100 tries.
'''
def __init__(self):
self.difficulty = 3
self.characters = []
def capability(self, char):
'''Returns how capable the character is at mastering this encounter.
A percentage is returned. 100 means the character will master this
encounter every single time. 1 means the character will master this
encounter in 1 out of 100 tries (on average).
'''
# sub classes must implement this method
return -1
def most_capable(self, charlist):
'''Returns the character most capable of mastering an encounter check.
'''
cap2char = {}
for char in charlist:
# there could be several chars with equal capability
try:
cap2char[self.capability(char)].append(char)
except KeyError:
cap2char[self.capability(char)] = [char]
maxcap = max(cap2char.keys())
most_capable = random.choice(cap2char[maxcap])
return most_capable
def take_check(self, char):
'''A character takes an encounter check, returns True if successful.
'''
roll = random.randint(0, 99)
if roll<self.capability(char):
self.mastered_check(char)
passed = True
else:
self.failed_check(char)
passed = False
return passed
def mastered_check(self, char):
'''Applies the effects of a successful encounter check to the character.
'''
# should increase character tiredness here
char.tiredness += 20
# could also increase happiness, experience, ...
def failed_check(self, char):
'''Applies the effects of a failed encounter check to the character.
'''
# should increase character tiredness here
char.tiredness += 20
# should also apply negative effects: reduce health, happiness
def run_encounter(self):
'''This will play out the encounter.
'''
msg = "no characters defined for encounter '%s'"
assert self.characters, msg % self
# determine the maximum number of failed checks
maxfail = 5 - self.difficulty
# perform up to five encounter checks
failedchecks = 0
for i in range(0, 5):
checkchar = self.most_capable(self.characters)
success = self.take_check(checkchar)
if not success:
failedchecks += 1
# see if the characters mastered the encounter
if failedchecks>maxfail:
mastered = False
for char in self.characters:
self.failed_encounter(char)
else:
mastered = True
for char in self.characters:
self.mastered_encounter(char)
return mastered
def mastered_encounter(self, char):
'''Applies the effects of a mastered encounter to the character.
'''
char.experience += (self.difficulty * self.difficulty)
# could also increase happiness, fame
def failed_encounter(self, char):
'''Applies the effects of a failed encounter to the character.
'''
pass
# should apply negative effects: reduce health, happiness, fame
I'm still within text files and excel tabs now, but I'm willing to put it all into renpy code afterwards. It look like a repetitive work, so I should be able to do that if someone help me with first example.
Hey guys,
here's the first version of an encounter system. The basic idea is to calculate a percentage, the capability, from the attributes of the character trying to master the encounter. Then the capability is checked five times against a random number between 0 and 99. Then, failures are counted. Very hard encounters allow no failures, very easy ones allow four failures. If the number of failed checks is not greater than the allowed number of failed checks, the encounter has been mastered. For a more detailed explanation, please look at the comments in the code below.
I'm not perfectly happy with the success percentages, but it's good enough I think.
Do you like the system so far?
The goal is that you can later write (for example):Code: [Select]trap = TrapEncounter()
trap.difficulty = 4
trap.characters = [warrior1, warrior2]
success = trap.run_encounter()
@Xela
I will use inheritance to implement this as not using it would multiply lots of code. However, if you insist, we can take the inheritance out when copying the code into RenPy.
The following code is untested, will contain typos and will not run. I show it here so you can review the comments and the basic system.Code: [Select]class BaseEncounter(object):
'''Represents a problem questing characters have to master.
Difficulty
The difficulty describes how hard it is to master this encounter. It ranges
from 'very easy' = 1 to 'very hard' = 5.
Mastering the encounter
In order to master the encounter, the characters must pass a number of
encounter checks equal to the difficulty, e.g. one check for a very easy
encounter or three checks for a normal encounter. If they succeed within
five tries, they master the encounter. If the characters fail at
6 - difficulty encounter checks, e.g. 2 for a hard enounter, they fail the
encounter and collectively suffer consequences.
The encounter check
A random number between 0 and 99 is rolled. If it is lower than the
capability of the character, the check succeeds.
Probability of failure at various capabilities and difficulties
10% capability "Rookie"
'very easy', one successful check needed to master encounter
probability to fail one check: 1 - 0.1 = 0.9
probability to fail all five: 0.9 * 0.9 * 0.9 * 0.9 * 0.9 = 0.59
Rookies succeed at very easy encounters in 41 out of 100 tries.
'very hard', five successful checks needed to master encounter
probability to succeed on one check: 0.1
probability to master all five: 0.1 * 0.1 * 0.1 * 0.1 * 0.1 =0.00001
Rookies succeed at very hard encounters in 1 out of 10000 tries.
90% capability "Master"
'very easy', one successful check needed to master encounter
probability to fail one check: 1 - 0.9 = 0.1
probability to fail all five: 0.1 * 0.1 * 0.1 * 0.1 * 0.1 = 0.00001
Masters succeed at very easy encounters in 9999 out of 10000 tries.
'very hard', five successful checks needed to master encounter
probability to succeed on one check: 0.9
probability to master all five: 0.9 * 0.9 * 0.9 * 0.9 * 0.9 = 0.59
Masters succeed at very hard encounters in 59 out of 100 tries.
'''
def __init__(self):
self.difficulty = 3
self.characters = []
def capability(self, char):
'''Returns how capable the character is at mastering this encounter.
A percentage is returned. 100 means the character will master this
encounter every single time. 1 means the character will master this
encounter in 1 out of 100 tries (on average).
'''
# sub classes must implement this method
return -1
def most_capable(self, charlist):
'''Returns the character most capable of mastering an encounter check.
'''
cap2char = {}
for char in charlist:
# there could be several chars with equal capability
try:
cap2char[self.capability(char)].append(char)
except KeyError:
cap2char[self.capability(char)] = [char]
maxcap = max(cap2char.keys())
most_capable = random.choice(cap2char[maxcap])
return most_capable
def take_check(self, char):
'''A character takes an encounter check, returns True if successful.
'''
roll = random.randint(0, 99)
if roll<self.capability(char):
self.mastered_check(char)
passed = True
else:
self.failed_check(char)
passed = False
return passed
def mastered_check(self, char):
'''Applies the effects of a successful encounter check to the character.
'''
# should increase character tiredness here
char.tiredness += 20
# could also increase happiness, experience, ...
def failed_check(self, char):
'''Applies the effects of a failed encounter check to the character.
'''
# should increase character tiredness here
char.tiredness += 20
# should also apply negative effects: reduce health, happiness
def run_encounter(self):
'''This will play out the encounter.
'''
msg = "no characters defined for encounter '%s'"
assert self.characters, msg % self
# determine the maximum number of failed checks
maxfail = 5 - self.difficulty
# perform up to five encounter checks
failedchecks = 0
for i in range(0, 5):
checkchar = self.most_capable(self.characters)
success = self.take_check(checkchar)
if not success:
failedchecks += 1
# see if the characters mastered the encounter
if failedchecks>maxfail:
mastered = False
for char in self.characters:
self.failed_encounter(char)
else:
mastered = True
for char in self.characters:
self.mastered_encounter(char)
return mastered
def mastered_encounter(self, char):
'''Applies the effects of a mastered encounter to the character.
'''
char.experience += (self.difficulty * self.difficulty)
# could also increase happiness, fame
def failed_encounter(self, char):
'''Applies the effects of a failed encounter to the character.
'''
pass
# should apply negative effects: reduce health, happiness, fame
The goal is that you can later write (for example):Maybe some traits could increase or decrease probability of successful check a little (5-10%), regardless of stat value, for example Assassin or Warrioir in a fighting check, or Clumsy an a trap check.Code: [Select]trap = TrapEncounter()
trap.difficulty = 4
trap.characters = [warrior1, warrior2]
success = trap.run_encounter()
@Xela
The random number (0 to 99) is checked against a characters capability for a certain encounter. This capability is defined as a percentage (1 to 100) and is calculated from the characters attributes (and possibly traits). It is the responsibility of the encounter to calculate the capability correctly.
@DarkTl
Factoring in traits is entirely possible and should be done in the implementation of the capability method of the respective encounter class, TrapEncounter in the given example.
A couple of questions. Do we actually have, or supposed to have, or will have years in game's calendar? And if yes, which year is now ingame?
Also I'd like to make some cleaning in dropbox folder, since it becomes a bit messy. Does anyone still need pics I've uploaded in the very start of this thread, like advertising staff and so on? I'll just reorganize them if yes, and delete if no.
Does world/land/state/whatever where events take place have a name? Or any geographical details at all? Is it a planet in the first place, or some dimensional pocket?
OK then, I'll start to work on intro, basic plot and 3 simple endings.
Just in case, all pics I've found earlier except those in shared folder, a new link (https://dl.dropbox.com/u/79429937/Staff.7z).
Check my folder for intro and ending pics and texts. Checking for errors and looking for even more suitable pics would be appreciated. Anyway, this is the best I can do with semantic parts of the plot.
I'm still thinking about intermediate staff, and I guess we still need a hidden stat reflecting player deeds, because if we will have plot-related quests, just calculation of free girls and slaves won't be enough. Besides, buying a slave and enslaving a free girl are two very different things.
# Like if the player managed to buy and run best brothel in the city by endgame?How we'll determine endgame for such simple tasks? Don't tell me player will have limited time from the start, I hate such things :(
How we'll determine endgame for such simple tasks? Don't tell me player will have limited time from the start, I hate such things :(
Also, any notes about the intro?
just my two cents, but I don't mind if the game has an official end time. But it's always better if I can continue playing after that date, and don't have to restart (unless I want to ;) ).
oh, for the quest, if they are "do ____ before ____" are you guys going to have a way to complete the quest early? (hate that about simbro)
Limited time is a part of usual SimBro design. I don't care much for that either but it is fairly difficult to code basic endings without it.Collect a really huge amount of money, destroy all competitors, have 80% of citizens as your regular customers. Even complete any 3 or 4 of the tasks you suggested as basic endings requirements (things like if the player managed to buy and run best brothel in the city).
I wrote somewhere about many social statuses. There are plenty of paid workers, farmers and so on as well.Yeah, I forgot about it. My bad.
- Slaves were trained to be soldiers and sold in large lots.I don't know. Isn't it just plainly stupid to make a lot of soldiers from slaves? Even in ancient Rome people were smarter. One thing is to train them for arena or as personal mages/bodyguards, but as an army? You might as well have breakfast on a barrel of gunpowder every day.
- Slaves took part in Arena games, best fighters could win their freedom.
Slave revolts were eventually extinguished. Many slaves were happy with their masters, especially those with skills in battle, magic, education, service who were very well treated and had a decent life of their own.And we have girls from hundreds of different worlds because..?
I want to base the atmosphere in PyTFall on free cities from Songs Of Ice and Fire novelsMaybe you'll write text for intro youtself since you already have completely ready concept? I think it will save us a lot of time, after all I'm not a mindreader, just as you told.
Collect a really huge amount of money, destroy all competitors, have 80% of citizens as your regular customers. Even complete any 3 or 4 of the tasks you suggested as basic endings requirements (things like if the player managed to buy and run best brothel in the city).
I don't know. Isn't it just plainly stupid to make a lot of soldiers from slaves? Even in ancient Rome people were smarter. One thing is to train them for arena or as personal mages/bodyguards, but as an army? You might as well have breakfast on a barrel of gunpowder every day.
And we have girls from hundreds of different worlds because..?
Maybe you'll write text for intro youtself since you already have completely ready concept? I think it will save us a lot of time, after all I'm not a mindreader, just as you told.
I'll find suitable pics for it then.
Romans were not stupid btw.They were pretty careless about their slaves, but not as careless as you suggest people of PyTFall should be. Even so, they had major revolts, but thanks to their army they suppressed slaves with quite significant losses.
I gave out more than enough information on the world, write it if you have time. If I write it myself, it will be a lot later. I skipped coding yesterday so I am planning to put a few hours in it tonight.It's not about the information, you know. You asked for atmosphere of novels I never read (and I don't like its screen version, to be honest). This is just impossible, especially for non-writer. I guess I could try to read it, but naturally it will take some time, and there is no guarantee I like it.
They were pretty careless about their slaves, but not as careless as you suggest people of PyTFall should be. Even so, they had major revolts, but thanks to their army they suppressed slaves with quite significant losses.
Imagine if they had army of wannabe rebels, trained slaves, not free people. Even if they lost, Rome would lie in ruins. As well as PyTFall.
I know this is just a game, a fiction. But still I don't believe it. Maybe because I didn't read SoIF, but read some history books, who knows. Never mind me :)
It's not about the information, you know. You asked for atmosphere of novels I never read (and I don't like its screen version, to be honest). This is just impossible, especially for non-writer. I guess I could try to read it, but naturally it will take some time, and there is no guarantee I like it.
So if anyone feels like writing intro and already read SoIF, please go ahead and do it
8)
Heh, you never mentioned these schools until now, so I guess they waiting for us somewhere in the Internet :D
Sounds interesting. Just make sure fees won't be just for show, especially with 70+ stats.
Also, how about using level restrictions? Something like max available stat in the school = character level * 10 (5, maybe 20)? Even if player is rich, this will prevent instant leveling of girls until they will have at least basic experience.
Huh? I could swear I saw level string in the game's interface last time I checked it.
LoLThat sounds interesting. My only concern would be that this system is quite involved, which will demand significant micromanagement from the player.
Oki, this is how I want to approach schools (instead just sending girls to gain stats until they are maxed out):
- There will be a number of courses (like Dance, XXX, Combat etc.) that will be updated every couple of days (new once added, old once removed. Each course will have a duration but you can pull your girl out at any time. If girl completes the full course, it will mean extra bonus to stats)
- Each course will have a teacher. Teachers for now will be faceless and nameless, as game expands we can add names and faces, maybe even make couple of those into NPCs. Teacher will have teaching skill (How good of a teacher he/she is) and knowledge (what max can a stat be raised to).
- Fees will be charged daily and depend on skills and knowledge of the teacher.
What do you think?
That sounds interesting. My only concern would be that this system is quite involved, which will demand significant micromanagement from the player.
Well, if minimum duration of a single course is 14 days for example, it shouldn't be all that bad?I agree. Minimum duration of 3-4 days would be a problem IMHO, 14 days should be ok.
Because sending girl to school is not something you have to do, I think a little micromanagement is acceptable.
But if it is a problem, maybe there can be a course with a really bad teacher that is always available or something...
If courses will be selected from a list and not by static buttons and have their own teachers, nothing is preventing from creating courses that teach more then one stat, or something unique or ones that are part of a quest/storyline (like send 5 girls to a secret training) in future, is that right?
That reminds me, how you are going to handle traits? I mean, how easily a girl can gain or lose a permanent trait? You know, we have two basic examples, wm and wm ex. I don't even know which of them is better.
Besides, is it possible to modify values of health, mp and fatigue? I mean, can I use strings like <max mana = '20' />, or <min fatigue = '-20' />, or <mod health = '20' />?
Do they have a sex? I'm not talking about whoring here, I mean lesbian waitress enjoys serving a pretty female customer much more than male one. And vice versa.
Do they have any preferences? I thought about adding Twisted trait from wm ("Her thought of pleasure is not... ordinary. Customers need to have a rather exotic taste or they won't enjoy what she has in store"), but if their preferences are rather simple, it won't make any sense.
I see. What if we set min mp to 10, does girl will be able to cast spells with cost <= 10 infinitely?
And with min health set to 10 will she become immortal?
Another question, how Fatigue works? If I increase its max, does girl actually become hardier?
Looks good. One thing, in the bottom row you cannot clearly see days left string.
I'll see what I can do about frames.?
For now max Fatigue is 300. If some trait will set it to 400, girl will be able to work until its current value becomes 400, not 300 as it was before?
Alright, I've updated traits and refreshed most of their effects on jobs in corresponding file.
I've also found some wooden pics. Since "frame" is rather indistinct word, you probably should explain me what do you need them for if you don't like those.
Alright, I've updated traits and refreshed most of their effects on jobs in corresponding file.
I've also found some wooden pics. Since "frame" is rather indistinct word, you probably should explain me what do you need them for if you don't like those.
Looks like things are going smoothly. I'd love to fool around with this, since WM is getting repetitive. Early Alpha/Beta when?
This is a bug in Ren'Py, since a change in bar value should cause an interaction restart.
I just committed a fix, which will be in the next 6.15 pre-release.
I'm bored, so I thought about writing texts for Rest depending on traits. You know, Nerd reading a book, Nymphomaniac having some fun with herself and so on. Any objections or notes?
I guess I have free time, I have nothing to do at work right now anyway :)
What do you mean by rework?
I think there is a bit misunderstanding about girlmeets. I'm not "doing" them. I'm not adding anything anywhere.
I like the simple simbro1x system with one introduction line and responses to player action (actually even simpler then simbro, because we agreed to not voice the player at all). My only concern was to get larger selection of those lines, to better match personalities and traits. But even after a week, I don't know what best approach would be... (and it's still only text, I don't even touch dates and gifts)
I'd like to help (but I think I'm more of use on girlpacks), but if you really want something from me to be done on girlmeets, I'm sorry, but you must explain me exactly what there's need to be done. :(
I don't have any unless you're planning to code those into the game yourself.Sadly, the language I use (Delphi) has very different syntax. I can read you code mostly, but to write it myself is a bad idea, unless you feel like cleaning others' mistakes for hours.
You're already doing trait texts for rest jobs. That is also important for the project. + messing with pics while at work might not be the best idea...Alright, then I will finish texts first. Don't worry about pics, people must standing behind me to see what I'm doing, and the only door in my sight. Almost all packs I've ever made are done at work :D
Adding Ino, Temari, Tsunade, Anko etc. from Naruto would not hurt...I would prefer to add Xenosaga and Persona girls first, but if Cherry or someone else doesn't have enough time for looking for more Naruto pics, sure, why not.
Adding relevant traits and traitblocks for girl that we have."Traitblocks"? Do you mean blocks of traits, or blocked traits, or something else? :)
Not just for rest, but high quality pics for other jobs as well, accompanied by texts as job/rest events that activate only on certain conditions. If while searching for pics, something like this pops up and just seems perfect, collect these pics and I'll code events for them during jobs performance based on ANY conditions (Like traits, statuses, locations, jobs, multiple girls and so on).Well, if you say so. Personally, I think all this is way too much for the one single coder, but if you want it, you will get it 8)
PS: Keep in mind that the more categories like bj_deep or rest_garden, the better, I'll make sure they fall down if not available like domino's to simpler forms. But if they are available, we should use them... we're trying to make a next gen SimBrothel/WM after all
However I must say I'm not sure about your plans with pictures. While it sounds nice, from my experience there are only a handful of girls with that variety of hentai pics. Actually even the service job is a hard one for less then top popular girls... and do we really need a masturbation? What is that good for in gameplay?
Sadly, the language I use (Delphi) has very different syntax. I can read you code mostly, but to write it myself is a bad idea, unless you feel like cleaning others' mistakes for hours.
I would prefer to add Xenosaga and Persona girls first, but if Cherry or someone else doesn't have enough time for looking for more Naruto pics, sure, why not.
"Traitblocks"? Do you mean blocks of traits, or blocked traits, or something else? :)
Besides, since it's up to you to add all traits into code, maybe you need to view traits file and delete those you don't like/want?
Well, if you say so. Personally, I think all this is way too much for the one single coder, but if you want it, you will get it 8)
What do you mean "add to the code"? I'll add job checks, event checks relevant to traits, that is my task.That's what I mean. Several checks and events for every single trait and who knows what else in the future. So right now you can make your life easier by removing traits you don't like :)
That's what I mean. Several checks and events for every single trait and who knows what else in the future. So right now you can make your life easier by removing traits you don't like :)
ok, for packs, I rename and upload what I already have for sakura/tenten/hinata, but I will not do anything else for them or add other naruto girls for now. I never actually seen more then 5 episodes of naruto, so I'm not really confident about it and also someone else will have to do the girl files.
I'm not familiar with persona either, so I gladly leave all of them to DarkTl.
But I offer to help with quest .pngs for any girl, because that involves more photoshoping then usual.
I'll help with Haruhi (maybe Tifa) if she'll be still untouched about time I get somewhere with girlmeets. But that can take a while so I'm not picking anyone now.
...geez, I would like to add girls, but It usually takes me about 3 full days of work to get pictures for one, and there's also so much other interesting things to do with so little time...
I'll help with Haruhi (maybe Tifa) if she'll be still untouched about time I get somewhere with girlmeets. But that can take a while so I'm not picking anyone now.If you want i can upload the rest of my pics for the haruhi girls - haven't really worked on those, you could probably find some more new pics on gelbooru.
...geez, I would like to add girls, but It usually takes me about 3 full days of work to get pictures for one, and there's also so much other interesting things to do with so little time...
If you want i can upload the rest of my pics for the haruhi girls - haven't really worked on those, you could probably find some more new pics on gelbooru.
I just threw that pack for haruhi up to see if I could make something for the prototype and simply scavenged a half done wm pic pack I had lying around for it.
We will probably need to adjust her character significantly to fit the game though (for events and stuff).
What we need are:Well, I'm familiar with Naruto, Bleach and One Piece. If by Eva you mean Evangelion, and by FF and FMA you mean Final Fantasy and Fullmetal Alchemist, then I'm familiar with them too.
You are probably not a perfectionist picture-freak like me :)
You need a system... I made girlpacks much faster than that :)
PS: You have one Hinata pic under profile happy, where she looks really happy... but has been recently stabbed in the head with a sharp object... get rid of that :DOk, I removed that blood... but I though it was cute :)
Who would have thought it's so hard to think up more than one good event per trait, especially for undistinguished traits (like Silly, but still not Retarded). It takes about 4 hours to write it for 10 traits. I'll try to cover at least 15 traits per day, that means I need about 5 days to complete it. Hopefully it will become easier in the future, when I'll get used to it.
Well, I'm familiar with Naruto, Bleach and One Piece. If by Eva you mean Evangelion, and by FF and FMA you mean Final Fantasy and Fullmetal Alchemist, then I'm familiar with them too.
However, even with Future and Lurker packs on the hands, it means a lot of work (=a lot of time) for just me and CherryWood. I'm not complaining, just warning you.
We need more than one?Sure thing, at least two. With random selection, naturally. Some with general purposes, others for high reputaion or within a garden, if you have one. You can't expect from a healthy Nerd reading a book every damn time, can you? :D
Puella Magi Madoka Magica
Ok, I removed that blood... but I though it was cute :)
What we need are:I am sadly not familiar enough with any of these to be of any help, sorry.
Sure thing, at least two. With random selection, naturally. Some with general purposes, others for high reputaion or within a garden, if you have one. You can't expect from a healthy Nerd reading a book every damn time, can you? :D
Ok looked over the game a bit:
Is it really necessary to have the "She received %d Gold as payment and has split it with you (you get %d %%)." in every if clause of the whore job?
Besides that I went through a lot of the whoring and fixed some typos and tried making some of the sentences flow better. I still have to go through acts other than straight sex before I am done (I would like to have different sentences for the different acts), but I am pretty tired already so I will have to do that later.
I also changed the text of the training menu a bit.
Also made some changes to the UI in the girl profile screen again since I had some small formatting issues.
The alternating text colors in the stats part are supposed to make the data easier to read - not sure if I like how it turned out though.
I personally like the centered name and new placement of location, class and action though.
(on the matter of this screen: wouldn't it make sense to hide info that hasn't anything to do with her class? (There still should be a button there to show the info))
I think I found a bug too: A slave (TenTen) I used as service worker always has two entries in the next day screen. I haven't tried reproducing this yet with another girl but have dropped the savegame into my folder anyway if you want to have a look.
I am sadly not familiar enough with any of these to be of any help, sorry.
Distantly related to this I would like to ask how many girls we have that are service workers.
Also another thing I noticed is that some of the girls you can meet in the city right now are slaves - something that we should change I think.
I put a textfile about girlmeet dialogues in my folder. But I'm still kinda clueless...
I've read your file but I am not entirely sure about personality types, simply because girls do not have personality types in the game right now and that is to much work.There can be just trait's i didn't mean something with that. We already have a Shy trait and Kind trait and Meek trait... I just add a few and we can later simply write into modders guide "this is a trait that have girlmeet lines" or something.
I suggest just simpler approach. One, maybe two generic responses with a random chance for a response based on traits. You are starting to broad, simple generic responses first, rest later...
I think I found a bug too: A slave (TenTen) I used as service worker always has two entries in the next day screen. I haven't tried reproducing this yet with another girl but have dropped the savegame into my folder anyway if you want to have a look.
There can be just trait's i didn't mean something with that. We already have a Shy trait and Kind trait and Meek trait... I just add a few and we can later simply write into modders guide "this is a trait that have girlmeet lines" or something.
Your suggestion is good, but I have done it in reversal... I already have lines and I want to put them somewhere. Because I'm not a native english speaker, It would take me to much time to do it in "normal" way.
----------------
This is for all who will work on pictures. Can we please create a file with names all picture categories whoever will use? We already have a lot of them and with all of these new suggested, It started to be a bit confusing for me...
I don't want modders messing with girlsmeets unless it is for specific girls. If someone outside of dev team offers better options, I'll be happy to throw those in, otherwise modders should mod girls, not main game elements.maybe stripped down version of girlmeet screen that can be copied to girl script to simulate that?
maybe stripped down version of girlmeet screen that can be copied to girl script to simulate that?
...but lets leave that for later.
I can already add a lot of responses based only on one trait and leave thinking about how to handle combinations of traits for later (or do it your way later). When you will have time, throw a simple example of one at me and I start filling.
Thank you for your time
She took a break to get hit on the head and spit blood. She is really happy now! we can safely award her with a retarded trait after thatHaha, excellent text for acquisition of Retarded trait, and we already have such great picture for her.
Haha, excellent text for acquisition of Retarded trait, and we already have such great picture for her.
You talked about events that activate only on certain conditions yourself, so now go ahead and code it :D
Hey guys,
there was some talk about organizing the pictures into categories. Xela mentioned that it's a goal of this project to match pictures to picture description well (or even as close as possible?). This is also a goal of my own project, Pytherworld, so I worked on that already. Tools I developed to organize pictures and describe them in a way software can understand:
imgtag
A little application with a graphical user interface that can add user-defined tags, e.g. names for categories, to image files. Tags are stored inside image files as XMP metadata, so they will stay there even if the file is renamed or moved somewhere else in the filesystem. I was planning to add an option to export the tags in the image files to XML later.
Images can also be tagged based on the names of the folders they are in or, in mass tagging mode, based on their location in the file system.
System requirements: Windows (tested on Windows 7 64bit)
If no windows is available, it can be run from source, but you will have to install quite a few dependencies (not recommended). imgtag should run on Linux too, but I never looked into packaging it for Linux. No idea if all it's dependencies run on MacOS.
ImageDatabase
Pytherworld uses a group of classes to represent the available picture repertoire. Currently, you can find all images in the database that...
...have every tag in a provided group of tags, e.g. all images with "charname - Mio", "sex - fuck" and "location - garden"
...have none of the tags in a provided group of tags
You can also rank a group of images according to how many tags of a given group of tags each image contains.
Combining these search options, powerful and detailed picture selection is possible.
The image database is a somewhat involved system, meaning it's a big chunk of code to understand, but it has been around for several months, has become quite stable, should be relatively easy to port and can be customized by subclassing it.
tagini
Tags can be defined by users via a INI configuration file. They are organized in categories so it becomes easy to ask questions like "Are there any sex-related tags on this picture". This little class reads the ini file and provides this information to the application, along with a few convenience methods for tag handling.
I tink especially imgtag could be a useful tool for this project as it is completely independent of PyTFall, can be customized by editing a text file and should be relatively easy to use because of the graphical user interface.
How do you plan to match pictures to text descriptions in PyTFall?
Well, I don't know how are these tools look like, but if they able to make pictures hunting and sorting at least a little easier and quicker, I'd like to try them.
Have you actually read the suggestion?Nope, sorry, I didn't read it at all, my previous post was written by my cat walking across the keyboard. Oh, wait a sec, it says it read the suggestion before walking, so that's all right, I guess. Good cat.
Keep in mind that the more categories like bj_deep or rest_gardenLooks like we going to use a huge amount of categoties already. Maybe even more than any other brothel game had.
Image categories are being created automaticallyNow that can't be the whole truth. I'm not familiar with the way WM sorts pictures in categories, but I'm sure a human needs to sort them at some level. Do you create a category by copying the images in a folder (so all images of the garden category are in a folder called "garden")? Do you create a category by renaming the image files, so garden images would be called "garden01.png", "garden02.png" and so on?
It is not meant to make anything easier.My suggestion is definitely meant to make handling pictures easier. If my tools actually can make handling images easier depends on what you want to do with them in PyTFall. That's what I'm trying to find out here.
He is suggesting that you take every single picture for girls in PyTFall and tag it using a piece of software with GUI interface.You can do that with imgtag, yes. You can also use the folder method I described above (whole foldertrees are supported, so you can add several tags to each image this way; Adding more than three is tiresome, though).
80 - 100 girls [...] 150 pictures per girl and 10 tags per picture [...] 5 second per tagSo you would spend 50s to select 10 tags? How? I sort my picture files by character, so all tags describing the looks of the character are added based on the location of the image in the file system. In the GUI, I choose a location, an activity, one or two tags describing other characters in the image and a clothing style. Takes maybe ten seconds (4-5 clicks) and I end up with 7 tags from the file's location in the file system and 4-5 from the GUI.
+ It makes less sense in PyTFall for three reasons:1) I disagree, unless you plan on having a lot more generic description than I thought you would.
1) Most jobs are fairly straight-forward and not very numerous. Not very difficult to match.
2) For unique quests and events (those that are meant to work just with one particular girl) specific images will can be called with one single line of code so modder can pic exactly what is required.
3) Image categories are being created automatically giving us a lot of options (not as many as with tagging system obviously). For specific events, it's easy to create a category required.
to adapt Rudi's tagging system to PyTFallThis is an option, but not required to use imgtag. I could also add an export feature to imgtag that allows saving the "image category information" in a format PyTFall understands, e.g. XML.
Well, I don't know how are these tools look like, but if they able to make pictures hunting and sorting at least a little easier and quicker, I'd like to try them.Well, none of my tools make picture hunting any easier. I don't really see what kind of tool could do that, unless one wrote a specialized version of google picture search.
Basically, my answer is this: If someone tags all the pictures (not willing to tag, actually completes at least 70% of all workload), I promise to do everything possible to write code to adapt Rudi's tagging system to PyTFall. Otherwise, we proceed as planned, with image categories in WM style.We planned to rework all of the girls. That means I have to look at every one of sakura/hinata/tenten pics again and choose category for it and rename it. Adding tags instead will only take a bit more time, so I don't see this as a problem at all if we choose to use them. (for me I mean, I'm not commenting need for new code)
Do you create a category by renaming the image files, so garden images would be called "garden01.png", "garden02.png" and so on?
So it all come to question how much of these we want to add and how hard is to code this new system, and I don't know anything about that.
Remember, SimBrothel has its own tool for creating girls, and quite handy one. I always thought wm and wm ex could use something similar too (I know, they have one, but totally outdated and less handy).
----------------------------
2) How do we call such an image?As far as I understand, for now WM as well as PyTFall analyzes pictures in the characters folders during start-up and and creates a database. I know nothing about Python class, but since rudistoned says he "could also add an export feature to imgtag that allows saving the "image category information" in a format PyTFall understands, e.g. XML.", let's say such pics database will be created by his software, not the game, as a separated XML file inside character folder. So if you want normal sex, you call a random image with <nsex> tag or something.
That version of SimBrothel can only tell difference between profile picture type (Of which it allows one per game) and a max 8 more pictures that are not tagged or defined at all...Wanna make a better editor for PitFall? ;)
As far as I understand, for now WM as well as PyTFall analyzes pictures in the characters folders during start-up and and creates a database. I know nothing about Python class, but since rudistoned says he "could also add an export feature to imgtag that allows saving the "image category information" in a format PyTFall understands, e.g. XML.", let's say such pics database will be created by his software, not the game, as a separated XML file inside character folder. So if you want normal sex, you call a random image with <nsex> tag or something.
Wanna make a better editor for PitFall? ;)
Ok, lets say someone actually tags 15000 images... What's the next step? Can you explain me two things in Laymans terms:
1) How do we transfer these image tags into a Python class?
2) How do we call such an image?
required, bonus, excluded = character.get_tags()
bonus.add("other clothing - nude")
bonus.add("sex - bondage")
bonus.add("indoor - basement")
sextags = core.tagini.get_tags("sex", categorized=True)
sextags.remove("sex - bondage")
sextags.remove("sex - lockdown")
sextags.remove("sex - touch")
excluded.update(sextags)
excluded.add("misc - generic")
excluded.add("misc - portrait")
imgctrl = core.imgdb.select_image(required, bonus, excluded)
This code results in a search for a picture that fulfills the following conditions:It still seems like an insane idea to me... workload seems monstrousI still don't get how copying a bunch of files into a folder and tagging them with imgtag should take longer than copying a bunch of files into a folder and rename each one of them.
to spend an year to slightly improve two or three things in the game instead of adding new kickass features...My tagging system is a lot more powerful than the system we use here in PyTFall. It is also more complicated though. Since you are obviously convinced the current PyTFall system is good enough, I suggest we stick with it. I don't care either way as I don't have to work with it ;-)
I think it would be interesting to know how much each girl makes. (so you know if she's a profitable girl or not)
when you say keep track of the amount for the whole day, do you mean like just have a number (be it positive or negative), and just having the profit added or loss subtracted from that, or actually keeping track of them separately for the whole game.
Personally, I don't care which is done, because it's really not that big of a deal. But if you are going to keep track I'd just have the shift over view + total profit (or loss as the case may be) for each girl.
The shift over view, only so I can keep an eye on why the girl ain't making money, or if it's changed.
and on the picture part, have you guys thought of using file folders, instead of file names, I know it's been suggested before on the forum. if needed (though sorta complicates it) it could be file folder +file name (file: pregnant. file name: profile/ sex /group just for example). I am just thinking about the problems WM had getting preg picture to work properly (and myself remembering how to label them properly)
Lets land our alien picturetagging spaceship for a momentToo bad. I like sci-fi :D
Possibility 2:I think this is the best way. Question is, if we going to track many stats for many girls, how many RAM and free disk space game will need after a couple of ingame months or years?
- We keep track of earnings (Work) and expenditures (Upkeep, wages, school fees, advertising, upgrades etc.) for the duration of the whole game and add that number to girl's profile screen and brothel's screen.
Workload 4 - 6 hours.
1) read XMP metadata from the image file and remember which file paths are tagged with which tags; the classes associated with my ImageDatabase class do that;
2) A simple request could be:
img = imgdb.get_image("sex - blowjob", "character - Asuka")
In Pytherworld, I create a group of tags that describes the image I am looking for. For example, the code that selects a picture for a character that shows this character being sold at a slave auction:Code: [Select]required, bonus, excluded = character.get_tags()
This code results in a search for a picture that fulfills the following conditions:
bonus.add("other clothing - nude")
bonus.add("sex - bondage")
bonus.add("indoor - basement")
sextags = core.tagini.get_tags("sex", categorized=True)
sextags.remove("sex - bondage")
sextags.remove("sex - lockdown")
sextags.remove("sex - touch")
excluded.update(sextags)
excluded.add("misc - generic")
excluded.add("misc - portrait")
imgctrl = core.imgdb.select_image(required, bonus, excluded)
* It shows the character
* The character is not participating in any activity of the sex category, except for "sex - bondage", "sex - lockdown", or being touched
* The image is no generic image and also not a portrait
* Images where the character is nude, in bondage and in a basement-like location are preferred
Selecting a picture like that is hard to do with your system, unless you create a specific category for that. However, each additional category in your system means additional image files to copy and rename. An additional category in my system can be added as an afterthought without any involvment from the girlpack authors. Just select a combination of tags and you have created a new category.
My tagging system is a lot more powerful than the system we use here in PyTFall. It is also more complicated though. Since you are obviously convinced the current PyTFall system is good enough, I suggest we stick with it. I don't care either way as I don't have to work with it ;-)
I think this is the best way. Question is, if we going to track many stats for many girls, how many RAM and free disk space game will need after a couple of ingame months or years?
Another thing is interface. I thought about graphs of some kind, at least for most important stats, but I don't know how well Python can handle such things.
Question is, if we going to track many stats for many girls, how many RAM and free disk space game will need after a couple of ingame months or years?Don't worry about system ressources, those are growing way faster than we can code. In addition, you need to throw A LOT of work on modern systems to even notice a delay. Just do what you think is the best way to solve your problem and only worry about performance if your program becomes to slow. Premature optimization is the root of all evil ;-)
I wonder how a XMP parser works...Basically it opens the file, scrolls to the part of the file that contains XMP metadata, reads the data there, closes the file and returns the data as a Python object. Therefore, this is quite a lot slower then simply reading the file name from the file system. In Pytherworld, I do this at "compile time", when I package the game into an executable. I would not recommend doing that every time you create a sGirl instance, as it would slow down character creation tremendously. There is also no reason to to that, unless you intend to change tags in image files during runtime.
How your program remembers the relationship between tags and image file paths really depends on what you want to accomplish. What you suggest is certainly doable.
If you want, I could certainly create a draft of a comparatively simple ImageDatabase class. I had a much simpler concept than I use today implemented in an earlier version of imgtag.
Possibility 2:Would get my vote - I would like option 3 but I don't think there would be anything to gain for a normal player there. Only thing I would like added to this is a simple screen for the brothel finances.
- We keep track of earnings (Work) and expenditures (Upkeep, wages, school fees, advertising, upgrades etc.) for the duration of the whole game and add that number to girl's profile screen and brothel's screen.
Workload 4 - 6 hours.
Would get my vote - I would like option 3 but I don't think there would be anything to gain for a normal player there. Only thing I would like added to this is a simple screen for the brothel finances.
As I worked with texts, I give some thought to adding Bisexual trait as well. Then again, since sexual orientation is something every character has, maybe we should use one variable somewhere in xml instead of 3-4 traits?
I postpone working on girls until you decide tags to prevent doing things twice, and start looking for location backgrounds instead and continue to gather girlmeet lines.
Because there are lot things changing a lot, I decided not to add them directly into a script now afterall. So I have a important question - and not only about girlmeet lines - do you want me to write texts I have now in a file, and if, how a file with written texts should look like to be easy for codder to use it, or should I just keep them for myself and wait until I fully understand where to place them and then do it (=later, but no work for anyone else)
import os
import pyexiv2
def load_tags(dirpath, filename):
'''Returns a list of tags stored as XMP metadata in the file at imgpath.
'''
imgpath = os.path.join(dirpath, filename)
# read the metadata of the file at imgpath
metadata = pyexiv2.ImageMetadata(imgpath)
metadata.read()
# read the XMP tag information in the metadata
if "Xmp.dc.subject" in self.metadata.xmp_keys:
tags = metadata["Xmp.dc.subject"].value
else:
tags = []
return tags
Here you go. Also there is no compile time with RenPy other than that happens on run-time, at least non that I am aware of.You are very right, Python is an interpreted language and therefore Python programs don't have a compile time - that's why I put the expression in parentheses. What I meant was that I would read the tags in the images when the game is packaged for a release, not at runtime when players load the game and certainly not during instantiation of a new character. This will be really slow for 15000 image files (think 15 minutes here, maybe more).
You mean like male/female/shemale/futanari? That would mean that many texts and jobs be a subject to change and adaptation. Prolly not worth it.Nope, I mean Frigid, Lesbian, Hetero (I guess we can call it a "hidden trait", since if girl is not something else, she is a Hetero) and Bisexual.
For background locations try taking a look on Roman's resources (that's the guy who I learned game programming from and programmer for Alkion).
Code: [Select]import os
Here you go.
import pyexiv2
def load_tags(dirpath, filename):
'''Returns a list of tags stored as XMP metadata in the file at imgpath.
'''
imgpath = os.path.join(dirpath, filename)
# read the metadata of the file at imgpath
metadata = pyexiv2.ImageMetadata(imgpath)
metadata.read()
# read the XMP tag information in the metadata
if "Xmp.dc.subject" in self.metadata.xmp_keys:
tags = metadata["Xmp.dc.subject"].value
else:
tags = []
return tags
This code requires the pyexiv2 library to run. I'm not sure how to package external libraries with RenPy. I've uploaded the offical installer of pyexiv2 as well as a zip with the contents of the installer to my dropbox folder. I think if you just copy the contents of the installer directly into a directory that is in the PYTHONPATH you should be fine. To find a directory that is on the PYTHONPATH include "print sys.argv[0]" somewhere in your code.
Btw, 'file = "%s/%s"%(imagedir,file)' is kinda dangerous on Windows. If whatever you feed this path into expects a UNIX path, all is well, but if that thing expects a windows path, this code will fail. If it is unsure what path convention should be used, it is better to use 'file = os.path.join(imagedir, file)', because that will always return a path valid for the current OS.
You are very right, Python is an interpreted language and therefore Python programs don't have a compile time - that's why I put the expression in parentheses. What I meant was that I would read the tags in the images when the game is packaged for a release, not at runtime when players load the game and certainly not during instantiation of a new character.
This will be really slow for 15000 image files (think 15 minutes here, maybe more).
Nope, I mean Frigid, Lesbian, Hetero (I guess we can call it a "hidden trait", since if girl is not something else, she is a Hetero) and Bisexual.
I think it makes more sense than traits system. Because girl may or may not have any particular trait, but she can't have any sexual orientation at all. For example, take a look at Slavemaker, it has an "orientation bar" which changes during the game depending on girl actions rather than a fixed value.
You could tell the same about boobs, they can be small or huge, but they are exist anyway :)
Current "boobs system" was taken from wm ex, but I begin to doubt that decision.
Of course, if it means a lot of work for you, than forget about it. Current system is working too, after all.
I personally think all these are ok as traits. And please yes, add bisexual trait, I would like to use it.
And If I may suggest, remove average boobs trait, because it's unlogical to have it.
And maybe, because girl's magic power depends on stat, it would sound better to call magic traits "magic talent" or something and not "strong magic" because they can be overpowered by girls who just train more.
I also think, because traits are so easy to add and call, that there is not a reason to limit how much of them we create if they makes at least a bit sense. I was actually thinking of adding a lot of really minor traits just because I have a few lines for them in girlmeets... But tell me if Im mistaken.
Also WM traits are not a superb example, because they were created for system that used random girls and not many of relevant text lines and events like we plan. For us, I believe, it would be best to look at, for example, at all of the girls from series that Xela requested and think what traits would be best to describe them...
To sum it, I believe that any quirk that at least 2-3 girls with enough pictures to be considered for game have, and you can think of at least one situation in game where it will be fun to use it, is traitworthy :) but that's me...
These are great! Trully no need to look for more, unles we need something really special...
And If I may suggest, remove average boobs trait, because it's unlogical to have it.Why? If you mean lack of stat changing, then this trait only task is to block 3 other boob traits to avoid any conflicts.
And maybe, because girl's magic power depends on stat, it would sound better to call magic traits "magic talent" or something and not "strong magic" because they can be overpowered by girls who just train more.OK, make sense.
I also think, because traits are so easy to add and call, that there is not a reason to limit how much of them we create if they makes at least a bit sense. I was actually thinking of adding a lot of really minor traits just because I have a few lines for them in girlmeets... But tell me if Im mistaken.There is a reason. Because I, you, Xela or someone else should also write texts, events and checks for each of them. If you want to add some traits, sure, go ahead. You even can add them in that xml in my folder, or make you own, if you prefer it that way. But please don't add too many, like 100-200 :)
For us, I believe, it would be best to look at, for example, at all of the girls from series that Xela requested and think what traits would be best to describe them...I don't have any objections, but if we are going to use a very large number of traits describing every detail, we probably should use wm ex stat system as well, where traits are cores of characters, and stats depending on traits and items only. Otherwise we'll quickly end up with overpowered girls.
Otherwise we'll quickly end up with overpowered girls.
Oh, and besides, if we'll have a trait for any or almost any characteristic, then there is no need in initial stats, because the character is completely described by initial traits already, and initial stats are coded within them.
Hgehe, that's what happened in Alkion...That's not a good example :D
That's not a good example :D
I mean wm ex, as more or less playable game. It doesn't use initial stats, and it has more traits than wm. So if we take such system, and still allow player to train girls like in wm, we'll get a middle ground.
Using self. inside a function, really ::)I copied the code from a method, so I knew it was working and did not test it. Don't tell me a simple oversight like that caused you problems :P
Actually this will not work in RenPy but it's my job to know that.Why would it not work in RenPy? pyexiv2 knows nothing about RenPy, so giving it a path formatted RenPy-style should break, unless you are on Linux or pyexiv2 fixes the path itself. You told me specifically to write a function that takes a dirpath and a filename. Those two need to be joined into a filepath to be of any use. Don't come to me crying if I give you what you asked for...
Took me about an hour but I think I've figured it out... I believe pyexiv2 was properly imported.Ah, the joy of using frameworks...
You would've been absolutely right if it was pure Python, what you suggest however has not even the slightest chance of working in RenPy.It will definitely work in RenPy if you give it a correct path. Why should it not? RenPy does not prevent you from accessing the file system, does it?
This was done proper taking the framework into consideration.I did not say something contrary to that statement. Read what I write.
There are two problems here...1) I already solved that problem and it is also not hard to do :P
1) I have no f%cking idea on how to do that, save creating some form of persistent data and ship that with the game, that would take me a while to figure out.
2) WM and SimBrothel are NOT OW where you have just 7 - 8 girls that are VERY hard to mod (due to paperdolls). Modders in WM and SimBrothel want to add girls by 100s. It's not going to work if they have to mess with persistent data or go through me every single time they want to add a new girl...
# store persistent data after it has been generated
import pickle
f = open(filepath, "wb")
pickle.dump(python_object_containing_data_to_store, f)
f.close()
# load persistent data when you need it
f = open(filepath, "rb")
python_object_containing_data_to_store = pickle.load(f)
f.close()
This is likely to be a dealbreaker because this makes modding the game that much harder... I may have just wasted 3 or 4 hours, still I learned something about a new package and that there are tags inside picture files (I seriously never had heard of that :D )I warned you two times already that reading all image files upon character instantiation will be very slow. It's not my fault if you don't read what I write.
Another thing, I do not understand why are you messing around with this tags inside images BS. If you just used xml for this, you could load the required amount of data about images on runtime in a matter of seconds and xml database is likely to be easier to maintain.You do realize Otherworld takes about one minute to load all the girl XML data, and they have fewer images than you plan to have? No, you can't load tags for 15000 images in a matter of seconds from XML, especially if they are spread over several hundred XML files (one file per girl).
Function needs some form of filter for filetypes... Windows is messing us up :) Developers of this package should have thought of that by the way.Well, they did think of that. That's why you get this nice error message telling you exactly what's wrong. They wrote a parser for image metadata, so why would you give it a non-image file?
IOError: D:\Dev\Dropbox\SimBro Dev\renpy-6.14.1-sdk\SimBro PytFall v0.26/game\content/chars/persona4/Rise_Kujikawa/Thumbs.db: The file contains data of an unknown image type
import os
filename, ext = os.path.splitext(filepath_or_filename)
if ext.lower() in ["jpg", "png"]:
load_tags(filepath)
You know, Xela, I've tried being polite with you, but you either don't get polite or you don't like polite. So, here you go, an answer matching your tone.
I copied the code from a method, so I knew it was working and did not test it. Don't tell me a simple oversight like that caused you problems
You know, I could have just copied a nice, simple class that offers the same functionality. Would have been less effort for me and it would have worked without problems, because it's well tested code. However, I know you hate code not written specifically for PyTFall, so took the extra effort of copying together a function that does exactly what you asked me for. And here you are, complaining about an error that takes a few seconds to fix...
Why would it not work in RenPy? pyexiv2 knows nothing about RenPy, so giving it a path formatted RenPy-style should break, unless you are on Linux or pyexiv2 fixes the path itself. You told me specifically to write a function that takes a dirpath and a filename. Those two need to be joined into a filepath to be of any use. Don't come to me crying if I give you what you asked for...
Instead, lets say you write a function that loads tags from the file and we call it "rudis_tagloader()" that takes file path and filename as argument (simply a variable called file in the above function) and returns a list or a dict of tags:
file = "%s/%s"%(imagedir,file)
content[key].__dict__['gfx'][acttype] = [dict(file = rudis_tagloader(file))]
It will definitely work in RenPy if you give it a correct path. Why should it not? RenPy does not prevent you from accessing the file system, does it?
I did not say something contrary to that statement. Read what I write.
Btw, 'file = "%s/%s"%(imagedir,file)' is kinda dangerous on Windows. If whatever you feed this path into expects a UNIX path, all is well, but if that thing expects a windows path, this code will fail. If it is unsure what path convention should be used, it is better to use 'file = os.path.join(imagedir, file)', because that will always return a path valid for the current OS.
You would've been absolutely right if it was pure Python, what you suggest however has not even the slightest chance of working in RenPy.
file = "%s/%s"%(imagedir,file)
This was done proper taking the framework into consideration.
Ah, the joy of using frameworks...
1) I already solved that problem and it is also not hard to do :P
It goes something like thatCode: [Select]# store persistent data after it has been generated
import pickle
f = open(filepath, "wb")
pickle.dump(python_object_containing_data_to_store, f)
f.close()
# load persistent data when you need it
f = open(filepath, "rb")
python_object_containing_data_to_store = pickle.load(f)
f.close()
2) So? Have a button inside the games option menu, that recreates the persistent data when clicked. Or, if you think modders are too dumb to do that, detect changes automatically and recreate the persistent data when needed.
I warned you two times already that reading all image files upon character instantiation will be very slow. It's not my fault if you don't read what I write.
Btw, depending on how many characters you intend to instantiate at once, it might not be a real problem. One to five might be okay, fifty will be a problem. Still, IMHO it is not a good idea to recreate that information on every character instantation.
You do realize Otherworld takes about one minute to load all the girl XML data, and they have fewer images than you plan to have? No, you can't load tags for 15000 images in a matter of seconds from XML, especially if they are spread over several hundred XML files (one file per girl).
I use tags inside images because they are easier to maintain than XML files (for example, they don't need to change if the path to the file changes...) and they can be loaded faster than XML files if you store the information in a pickled object (=the persistent data we were talking about before). XML files are persistent data too, are they not?
I also offered to do this in XML for PyTFall, but you never came back to me about that, so I assumed you don't want to do that.
Well, they did think of that. That's why you get this nice error message telling you exactly what's wrong. They wrote a parser for image metadata, so why would you give it a non-image file?
I've solved all these problems already, but you want to learn the hard way. Here is your filter.Code: [Select]import os
filename, ext = os.path.splitext(filepath_or_filename)
if ext.lower() in ["jpg", "png"]:
load_tags(filepath)
You do realize Otherworld takes about one minute to load all the girl XML data, and they have fewer images than you plan to have? No, you can't load tags for 15000 images in a matter of seconds from XML, especially if they are spread over several hundred XML files (one file per girl).
You guys are not allowed to leave comments inside xml trunks:OK. It should be fine now.
OK. It should be fine now.
I suddenly remembered one more thing. WM has one unpleasant feature: if you want to add one or several girls in the game, you have to start a new game after adding their files, otherwise game will ignore them. I don't know if Aika and Crazy have fixed it, but Future has fixed it definitely.
Hopefully, PytFall won't have such restriction.
What might be possible is to create a button that checks if new girls have been added to the game after you load the last save but it would be a weird button and I have no idea on which screen it belongs.I don't see any problems with a button, if it saves us a lot of time. Something like "Check for new girls in the city" in some public location, like City Hall, Market or City Gates, with corresponding tooltip.
I don't see any problems with a button, if it saves us a lot of time. Something like "Check for new girls in the city" in some public location, like City Hall, Market or City Gates, with corresponding tooltip.
I am not a big fan of polite but reasonably polite with a small joke or a little stab here and there doesn't hurt anyone. If I came straightout offensive at any point, I do apologize! I greatly appreciate any help people offer to develop PyTFall!It's okay, thank you for the clarification.
You've basically said that it would have been better to use file = os.path.join(imagedir, file).No, I said it would be better to use "file = os.path.join(imagedir, file)" if whatever you need the path for expects a path formatted according to the conventions of the operating system ;-)
However changing that line of code in RenPy:I realize that. My comment was aimed at bringing different path building conventions to your attention, so you don't try to use a RenPy-formatted path for pyexiv2, as that might break. Sorry if I told you something you already knew.
file = "%s/%s"%(imagedir,file)
to
file = os.path.join(imagedir, file)
simply breaks the game. The reason for that RenPy as it has it's own way of accessing system.
Framework does have it's charms as well! It's not only downsides :)I know! I'm looking forward to people creating lots of nice quests :-)
All of your fixes and suggestions make sense, I'll have to try to adapt them to RenPy but I want to write some game code for nowTake your time. You can PM me if a question pops up.
And why would either of us give a damn about what happens in OtherWorld?I used it as an example for a game that loads tag information from XML files. Yes, it's Flash, but I beleive that hard disk access is so slow that there will be almost no performance difference between reading XML from Flash and reading XML from Python.
I wonder how fast PytherWorld can do it?Me too. I know loading my tag info for a several thousand image files causes a slight delay on a slow notebook harddisk, but I have to look up the exact number of tags loaded and measure how long it takes. Will report back on that one when I know more.
x = 400No it does not. The XML file is read once, maybe a few times, then the operating system will cache it somewhere and also the harddisk will cache it into it's RAM(?) cache. So, this code basically gives you one to a few harddisk accesses and 390+ times where the file is read from some kind of RAM, which tremendously faster than harddisk access. You would need 400 separate XML files to simulate reading 400 XML files.
while x > 0:
traits = load_content('traits')
x -= 1
This code loads it 400 times.
You said it yourself, hardware gets faster than we can program :)That is certainly true, but hard disk access is kind of an exception. They are getting faster much slower than the other components. Solid state disks are a big performance increase, but almost nobody has one. I'm not saying we should worry a lot about accessing files on the disk, but there are limits to what can be done in a few seconds.
I realize that. My comment was aimed at bringing different path building conventions to your attention, so you don't try to use a RenPy-formatted path for pyexiv2, as that might break. Sorry if I told you something you already knew.
No it does not. The XML file is read once, maybe a few times, then the operating system will cache it somewhere and also the harddisk will cache it into it's RAM(?) cache. So, this code basically gives you one to a few harddisk accesses and 390+ times where the file is read from some kind of RAM, which tremendously faster than harddisk access. You would need 400 separate XML files to simulate reading 400 XML files.
Oh and this is for Dark or anyone else who speaks Russian and likes RPG:Heh, remindes me another band, "Epidemic". Which band is this? I don't see its name in file properties, and even google is unable to find anything decent.
Someone has created a track for PyTFallIf you looking for tracks for various locations, I suggest trying this (http://animeost.info/15493/kamidori-alchemy-meister-sound-collection) OST from another game.
Heh, remindes me another band, "Epidemic". Which band is this? I don't see its name in file properties, and even google is unable to find anything decent.
OK. It should be fine now.
I suddenly remembered one more thing. WM has one unpleasant feature: if you want to add one or several girls in the game, you have to start a new game after adding their files, otherwise game will ignore them. I don't know if Aika and Crazy have fixed it, but Future has fixed it definitely.
Hopefully, PytFall won't have such restriction.
OK, let's clarify categories and their names once and for all to avoid any misunderstanding.
rest: rest_bed, rest_onsen, rest_garden, rest_beach and so on
blowjob pics: bj_deep, bj_titjob, bj_lickjob
normal sex: sex_69, sex_doggy, sex_got
anal: anal_69, anal_doggy, anal_got
lesbian: <------- which subcategories here?
mast for mastrubation
bdsm: <------- which subcategories here?
group: <------- which subcategories here?
a couple of battle sprites
profile with optional subcategories profileneutral, profilesad, profilehappy, profileangry
schools: dance, maid, etiquette, beauty, combat, (XXX = any sex pic, isn't it?)
shop for shopping
club for waitress (= maid school, isn't it?)
date, date_beach and so on
ent for entertainment (girl having fun of any kind or what?)
strip for striptease
Anything else? Like clean for cleaning (those pics are very rare even for popular characters)?
And do we still need quest sprites for each character? I doubt each of them will have a personal quest, after all. Or I'm wrong?
Hey guys,
I timed timed tag loading in Pytherworld:
It took 2.7 seconds to load a database containing 4887 images and 44736 tags from a pickled python object in a binary file. This is necessary every time the program is loaded.
It took 216 seconds to create this pickled object by reading the tag information stored in the 4887 image files. This is necessary every time the program is released and every time a modder changes the tag information on the image files.
These times can probably be improved because I never looked into making this process faster - it was always fast enough for my requirements.
Very well. So, to put it in a single format:
**********************************************
sex-related: sex, anal, blowjob, les, bdsm, mast, group
work/school: maid, strip, combat, etiquette, beauty, dance
sprites: battle, quest
other: date, rest, ent, shop, profile, profilehappy, profileneutral, profilesad, profileangry
a couple of battle spritesDo you think we need more than one?
ent for entertainment (girl having fun of any kind or what?)yup, it was part of dates nighthalkex suggested, where you take girl out to have fun. But because these are not written yet, I kind of randomly put something in for first Naruto girls as I'm not sure what would fit...
Anything else? Like clean for cleaning (those pics are very rare even for popular characters)?By early Xela's request, I also added battle (probably part of warrior report) and nude (dunno where this was supposed to be) category. But that's his call :)
And do we still need quest sprites for each character? I doubt each of them will have a personal quest, after all. Or I'm wrong?Yes, but it's set in a way that it will work fine with only questneutral 0.png (other three fall to it) to not force people into photoshoping that much.
Do you think we need more than one? yup, it was part of dates nighthalkex suggested, where you take girl out to have fun. But because these are not written yet, I kind of randomly put something in for first Naruto girls as I'm not sure what would fit... By early Xela's request, I also added battle (probably part of warrior report) and nude (dunno where this was supposed to be) category. But that's his call :)Yes, but it's set in a way that it will work fine with only questneutral 0.png (other three fall to it) to not force people into photoshoping that much.
If you (or anyone), by chance, feel not like creating them, just send applicable pics to me, as I kind of enjoy this type of work.
Do you think we need more than one?Probably not, but some of them may look funny during the combat, so this just in case.
By early Xela's request, I also added battle (probably part of warrior report)I guess they fall under the category of combat? We already use word "battle" for sprites, after all.
If you (or anyone), by chance, feel not like creating them, just send applicable pics to me, as I kind of enjoy this type of work.Thanks, I would appreciate that. I hate such things.
Nude for events and maybe also with future in mind, for gameevents.Ok, I added nude to my post.
One more thing I completely forgot about. Do we need Death category like in wm ex, for death and low-on-health events?
OK, I have to clarify it. What do you expect from nude category, why don't use strip instead? Without any clothes at all or what?
Yeah, most girls would have pics that clearly belong in strip category. Nude is without clothesGeez, that doesn't explain anything. Just tell what are you planning/going to use nude for.
Every free girl will expect a wageThere is an interesting feature in Brothel S.im: when you select girl wage via its bar, game also shows you how her disposition will change each turn with this wage, like -5 or +2. Quite handy.
Geez, that doesn't explain anything. Just tell what are you planning/going to use nude for.
There is an interesting feature in Brothel S.im: when you select girl wage via its bar, game also shows you how her disposition will change each turn with this wage, like -5 or +2. Quite handy.
Xela, you mentioned Heal job once. Will we have it eventually? I thought about using Priest or Healer occupation for characters like Tsunade if yes.
Still, this question need to be clarified. For example, Hyuuga Hanabi from Naruto (she even has packs for wm) can't be 18 years old no matter what game says, and since I make Naruto packs right now, we have to resolve the matter.
There is a girl that ships with original WM that has a pic saying 3yo mother in Japanese (looking about the same as well)Really? And here I thought Hanabi is the youngest in its packs. Jeez...
I guess "loli" means not girls only? I just have found a good pic with Temari and Konohamaru :)
Any notes about characters skills, maybe list of all skills in the game? Or it is better do not touch them at all yet?
So, all skills strings can be safely removed from data.xml?
<bskill name = "FistAttack"/>that kind of strings.
<mskill name = "Fire 1"/>
<mskill name = "Fire 2"/>
All yours characters have some skills in their xml, and because of that mine have them too. You know,that kind of strings.
So, it is better do not touch them at all yet? Or game does have a lot of them already? Like, wind magic for Temari instead of fire?
RenPy 6.15 has officially been released. I have already moved my dev version to it, I'll upload it to drop box after I had a chance to do more work on finances and advanced logic.
_ Bug where bar was not updating values in real time has been fixed.
_ Console works!
_ Several others updates and bugfixes as well.
trap = TrapEncounter()
trap.difficulty = 5
quest = BaseQuest()
quest.add_encounter("quest", "always", "trap1", trap)
quest.add_encounter("trap1", "always", "trap2", trap)
quest.add_encounter("trap2", "always", "trap3", trap)
A quest like this will require the questing characters to master the encounters trap1, trap2 and trap3. quest = BaseQuest()
quest.add_encounter("quest", "always", "trap1", trap)
quest.add_encounter("trap1", "success", "trap2", trap)
quest.add_encounter("trap1", "failure", "trap3", trap)
quest.add_encounter("trap3", "always", "trap4", trap)
In this quest, the characters first have to face trap1. If they succeed, they have to face trap 2. If they failed in the trap1 encounter, they have to face trap3 and trap 4.<?xml version="1.0" ?>
<quest>
<trap1 if="always">
<trap2 if="success"/>
<trap3 if="failure">
<trap4 if="always"/>
</trap3>
</trap1>
</quest>
# find the main trap-defeating attribute of this char
anti_trap_stats = ["agility", "defence", "magic"]
mainstatname, normmainstat = get_highest_stat(char, anti_trap_stats)
# factor in fatigue
minfat = char.min["fatigue"]
maxfat = char.max["fatigue"]
normfatigue = normalize_stat(minfat, char.fatigue, maxfat)
# calculate capability
# (the main stat is two times as important as fatigue)
result = (normmainstat * 2.0 + normfatigue) / 3.0
capability = int(round(result))
freshness = 100 - normfatigue
result = (normmainstat * 2.0 + freshness) / 3.0
Still, it feels like all stats should be taken into consideration...Okay, easy change. Which stats are important for which encounter depends entirely on the capability method of said encounter. So, only TrapEncounter.capability needs to be changed if you think it should depend on different stats. So, what stats should it depend on in your opinion? Can you give me a formula, or a list where each relevant stat has a percentage that describes how important it is for the TrapEncounter?
Okay, easy change. Which stats are important for which encounter depends entirely on the capability method of said encounter. So, only TrapEncounter.capability needs to be changed if you think it should depend on different stats. So, what stats should it depend on in your opinion? Can you give me a formula, or a list where each relevant stat has a percentage that describes how important it is for the TrapEncounter?
1) First check against intelligence and (in the future (For now just leave a TODO comment), level that we do not have today (http://pinkpetal.org/Smileys/DarkB/sad.gif) ). If intelligence and experience (level) failed...I like the idea to check against intelligence and experience first to avoid a trap and check defensive stats only if the "spot the trap" check fails. It makes sense. However, the system currently is to simply to support that in one encounter.
2) Second check is against all three of these stats on equal bases: ["agility", "defence", "magic"]. Your normalization of fatigue to get freshness is also an awesome idea, which should be taken into consideration on equal bases as well!
# diverging branches are possible
quest start
|
SpotDanger
/ \
Trap end
|
end
# converging branches are (currently) not possible
quest start
|
SpotDanger
/ \
Trap |
\ /
end
A quick question: does game support animated gifs? Can't say there are a lot of them, but sometimes I come across ones.
Disadvantages:
- Does not support .gif, .swf or anything that has to do with Flash.
Maybe I'll convert it to animated png then if I'll find really interesting gif.
You guys seem so motivated, I stongly wish you good luck.
If you need help with something, you can send me mps, I'll see what I can do.
You wanted to do something on the ui front if I remember right, any chance you would make the text window for the event texts bigger?
Also if I might suggest placing the buy brothel button inside the brothel managing screen?
Xela that looks pretty nice, how far along is the project?
Edit: Found the file where I had begun describing traits, feel free to scavenge from it for the trait descriptions if you want. [google doc] (https://docs.google.com/document/d/1YUOTNf4jyZnnz1-UOGXD8Wlj57HCgmZuc9gUM0i9F9E/edit?usp=sharing)
The only thing I am not completly sure we need right now from that list are the scar related ones, although I guess the warriors could have some use from them I guess.Precisely. Failed trap check, loss of many hp during a combat, etc. = scar trait. This will enliven gameplay, I believe.
Also added another argument to the artificial body in the rest text document.I don't see any new arguments there. Maybe you forgot to save it or something?
We'll have to use RenPy's own tools for animating an image or part of an image.So much for excellent with animations :D
Looks like we'll cover all Naruto characters which have enough pics to make a more or less decent pack when Cherry will finish Sakura and Ten-Ten.
I'm going to make Kos-Mos and maybe T-elos (if she has enough pics) from Xenosaga next, then I'll adapt Persona characters to new format. After that probably One Piece.
Also I think we should start to looking for another hosting for packs. My 3,4 Gb from dropbox is filled by 74% already.
So much for excellent with animations :D
Animations used in battle engines are made with 5 - 6 lines of code and called with oneOh yeah, that reminds me, since it's not supports any moving pics, it can't be easy to create magic effects in battle? You can't just find some random gif with a fire in the internet and throw it in an enemy, after all.
Oh yeah, that reminds me, since it's not supports any moving pics, it can't be easy to create magic effects in battle? You can't just find some random gif with a fire in the internet and throw it in an enemy, after all.
Have you ever seen a game that could?Well, the game you mentioned widely uses small, short movies with transparent background for many battle animations. I had no idea that this is possible until I've ripped it.
Well, the game you mentioned widely uses small, short movies with transparent background for many battle animations. I had no idea that this is possible until I've ripped it.
Well, the game you mentioned widely uses small, short movies with transparent background for many battle animations. I had no idea that this is possible until I've ripped it.
Here, I've ripped a .gif and loaded it into RenPyNice :)
I don't see any new arguments there. Maybe you forgot to save it or something?
Nice :)
I've found another RenPy game on Rutracker, "Science Girls". It has a similar battle system, take a look at it if you want to, maybe you can rip some good resources from it. I failed to find out where it stores animation and sounds.
I've checked that game out long time ago to learn about how it was coded, is that a Demo or Full version on RuTracker?That's not a demo, at least version for windows. Just follow the instructions in "Tabletko" folder, if you know what I mean :)
Besides that Artificial body can also be used to describe a cyborgs body, so you can't assume that a girl has no knowledge of 'organics'.Make sense. I guess we need a trait like Artificial Intelligence for pure robots and artificial, but organic characters then.
Also the formating of the trait file xml looks fucked up in my editor of choice (notepad++).I use usual notepad. I'm not a big fan of notepad+ after it showed a complete inability to work stably with hex files even with plugins.
That's not a demo, at least version for windows. Just follow the instructions in "Tabletko" folder, if you know what I mean :)
If you mean sg.rpa, then its size is more than 32 Mb. I've put installer and, um, other files in shared folder.
---------------------
Or maybe we should use trait like Unemotional, not just for robots, but for all Rei-like characters.
Or maybe we should use trait like Unemotional, not just for robots, but for all Rei-like characters.Unemotional is a good name for the trait.
I use usual notepad. I'm not a big fan of notepad+ after it showed a complete inability to work stably with hex files even with plugins.Hmm... I never need to work with hex files, I fell in love with it because of the syntax highlighting and auto completion features, probably saved my ass a few times when I was late with homework (and that one Test where I fell asleep for half an hour).
Unemotional is a good name for the trait.Btw, which of the names would be better, Unemotional or Emotionless?
Btw, which of the names would be better, Unemotional or Emotionless?
you wouldn't let a girl with such a limited understanding of 'organics' as your rest text implies near customersWhy? That would be a great event (https://dl.dropbox.com/u/79429937/1cf6f0af83171fe624dee0583c47a53c.jpg) :D
I like Impersonal, added.Why? That would be a great event (https://dl.dropbox.com/u/79429937/1cf6f0af83171fe624dee0583c47a53c.jpg) :D
Any suggestion about androids occupations? Most of them don't have strict moral principles (or any principles at all), more or less obedient and fight well too, so they are pretty much universal in terms of jobs.
I suggest finishing with base code for advanced logic first and take care of that later...Very well. I'll go play something instead of creating packs then 8)
Very well. I'll go play something instead of creating packs then 8)
Hello, I quite like the looks of the game so I thought I should drop this reply. If you still need writers (as in text and not code) I would be more than willing to help. I am also a bit experienced with xml code (do not expect too much out of me). If you still need a writer and wouldn't mind a first time poster I would be glad to help in any way I can. ^^
I'd love to help, and I will write something this coming weekend, but a list of what can be written would be helpful, as you said girl interactions but which girls im pretty sure some of them are already written
also you said something about NPCs, can I just whip up an npc give him a personality and a quest and then find some images that would suit him/her?
Also something more, a test version download link would be really helpful. If there is one I did not manage to find it >.<.
I'd love to help, and I will write something this coming weekend, but a list of what can be written would be helpfulWell, good example are small, random events occurring during the different jobs depending on character traits. We only have some for Rest for now, so the more the better. If Xela will provide list of jobs which he is going to use at least in basic version, it probably will help too :)
Well, good example are small, random events occurring during the different jobs depending on character traits. We only have some for Rest for now, so the more the better. If Xela will provide list of jobs which he is going to use at least in basic version, it probably will help too :)
We don't have any npc yet, and locations are pretty random, so if you feel like creating them, do what you think is right.
For those who only grab the SimBro PytFall v0.28 and copy it to another location for testing.
Remember to copy the entire renpy-6.15.0-sdk\module folder that xela has and copy/replace it into your own module folder for renpy.
Otherwise, errors will abound.
It appears that I'm unable to launch the game anymore. When I try to execute renpy.exe, nothing happens. I use win7, tried to run as administrator too.
I like the way it handled in brothels.im though, where different stats have different colors and game just shows you +3 -2 +4 every turn, so game interface is not cluttered with text. If you feel like borrowing that system, or using something similar, i.e. simple and clear instead of walls of text, I have no objections.
That is practically the same as I suggested :) Put stats on separate window, coloring fonts is easy with RenPy. Text will not be cluttered that way.Yeah, the thing is, even through I like it, I'm still not sure we need it. WM and Slavemaker do well without such detailed statistics. I guess we should try and see for yourself.
I couldn't launch it either so I've reuploaded the whole thing.I can launch it now, but I can't start a new game because db/map.xml is missing.
I can launch it now, but I can't start a new game because db/map.xml is missing.
Thanks, it works now.
I think one thing that should be changed is selection of brothel every time you want set someone to work. Another button like "Move to another brothel" or something would be better, like in WM. I just test the game several times, not play it, and I already getting tired of this extra movement :)
Any progress with girlsmeets?I'm really, really sorry, but I have nothing. Nothing at all.
I'm really, really sorry, but I have nothing. Nothing at all.
And I'm not working on it now either, I left that a while ago because I just wasn't able to do it. I was under impression that you know about that, but now I see that I stupidly deleted the file where I was saying that... My fault, again, I'm sorry.
I would love to help but... honestly, better to not count on me with anything right now. I've got a lot of school work to do and I also have an annoying toothache that prevents me from concentrating.... so now I was doing only the simplest stuff, like girl images (and even that was going slowly - NGE girl pack is only about 75% done and I barely touch my remaining share of work on Naruto)
Jeez, looks like I have to delete those damn backgrounds by myself after all.It's still ok, I don't plan to stop working on images. It's just because I was doing some other girls first (and did stuck with that for longer then I expected) that I don't have Naruto girls done yet. But I can leave that and do it as soon as possible, it's no problem.
Well, to be honest, I had a premonition about that. My Naruto packs are completely ready. Maybe a couple of tweaks with traits though.
I only have Shizune from Naruto girls completed at this very moment, but I upload her now so you can decide if your are willing to wait a bit more for me to do the rest.Wow, excellent work. I'll put backgroundless pics you uploaded to girls folders in case if Xela will need them for testing, but I definitely will wait for other "novel" sprites.
a battle sprite and one quest pic to work, so if you send me any of these, I'll always try to do it right away to make the girl usable fast.Alright, I'll continue to send them. While I'm able to quickly and neatly delete simple (i.e. homogeneous and contrasty enough) backgrounds by myself with the help of paint.net standard tools, I have problems with more complex backgrounds. Images often become messy and with blurred contour.
If you will agree, I would like doing them more or less in time of my own initiative (but only with your permission for the girl of course)Ok, feel free to make them when you have time. Use your own judgment, not every girl has good pics for novel sprites after all.
where can i get this game at?
Xela, the project is still alive? It's been awhile since the last update or even meaningful post.
Can that origin string in data.xml you talked about contain spaces?
what kind of writing do you need?
I had to spend majority of my time on my graduation thesis and other school stuff, so I did only very little and it doesn't look well with my time for this month either, but I try to resume creating more girls. (don't feel like writing now, sorry)
May I ask how fast do we need them? I tried my best for the girls I send until now, but It was also really slow. If needed, I can probably make them much faster if I skip some time consuming activities like editing, optimizing, creating sprites and omit some secondary sources, but the quality will suffer, especially for the less popular characters.
Anyway, I will try to cover Bleach next, if that's ok.
I guess it's hard to find free writers these days. Unless we have a fully playable version, our chances are slim to none.
You have to maintain interest to any incomplete project if you want many volunteers. Like Otherworld, which is actually far from being playable, but Daisy has updates in the blog almost every day, even if there is no progress at all (compare it to Alkion, where, at best, one update per month).
Otherwise just wait until we have playable and stable version uploaded on a couple of trackers (like pornolab). "Valet pletey" has a huge number of volunteers after that.
I don't see that many people working on OtherWorldWhat I mean is that the game is well known, even despite being quite unfinished and having hordes of bugs in every singe release. Good advertisement, if nothing else.
as for Valet Pletey, I though OldHuntsman worked along on the project with a bunch of betatesters?Yup. He never asked for writers and designers though, he asked for testers and now he has as much of them as he needs.
What I mean is that the game is well known, even despite being quite unfinished and having hordes of bugs in every singe release. Good advertisement, if nothing else.
That reminds me, what are absolute maximum values for stats, including all possible training, items and so on? About 200?
Btw, Xela, I looked at the paperdoll code and XML in Otherworld, because I somehow really like those paperdolls. It actually looks way more complicated than it is. The hardest part of reimplementing that system in Python was to find the part of the Flash code that parses the XML and figuring out how image scaling works in Flash in comparison to Qt.
Hey guys,
I worked some more on the system for automated quests (without player interaction). It is running without errors, which is good. I don't like the results currently though, because even maxed out characters fail pretty often at quests. Either my testing code does something wrong, or the success calculation code does something wrong, or the balancing is way off. I suspect it's the balancing, but I'll have to check it more to be sure.
If you want to figure out how new encounters and quests can be created, I suggest you look at the (simple) code of the TrapEncounter and LostTempleQuest classes. If you come up with any questions, ask away :-)
Does it mean that you will need even more item icons?
Does it mean that you will need even more item icons?
Well first off any traits that would be considered "Lolita" or "young" or even "Shy" would very much just take the beating or whatever verbal or physical abuse that might be sent there way.
Traits like Big Breasts, Splendid body or other traits that specifically refer to very obvious and visible physical traits would tend to lean towards attackers or opponents probably being more open to an altercation being defused through diplomacy or perhaps bribery through sex, sexual favors or promises of such. Maybe a particularly unruly person or an evil enemy might secretly want to date the girl or even the main character and offer to stop there harassment, violence or other negative attentions if such person agreed to go out on a date with them which could lead to other scenes where other choices could effect going down different paths by either gaining a strong and useful allie or a terrible and vicious enemy. So in essence this would be stuff that calms customers down. Maybe even enchanting voice trait?
Any traits that talk about Great Constitution or Stamina or Strength or anything such as those would likely fit best with a outright fighting type situation. This would be a solve by force type of situation.
If there are no guards and girl is not a slave, what kind of girl fights back or what kind just takes the beating (Slaves are obviously not allowed to fight back).I guess tsunadere slaves still could fight back, even if it means more problems for them and MC.
What kind of guard/girl would be more interested in trying to solve the conflict by force before trying to talk the costumer down or even be a cause of a conflictNoble (if customer is not as noble as she is, for example), Malicious, Tsundere, Aggressive. Shy and Mind Fucked too, as unable to talk down the costumer at all.
What kind of traits would help guards or girls to calm costumer down?Charismatic, Sexy Air. Any "good" physical traits, as Bloodkiss mentioned before, like Abnormally Large Boobs, Long Legs and so on.
I guess tsunadere slaves still could fight back, even if it means more problems for them and MC.
Anyway, fight back traits are Fighter and Assassin (they trained to fight, after all), Fearless, Aggressive, Tsundere and Malicious. Maybe also Adventurer and Tomboy, but not as much as the first ones.
Takes the beating traits are Broken Will, Shy, Meek, Nerd, Kind, Mind Fucked. Maybe also Impersonal, Fragile and Dependant, but not as much as the first ones.
Noble (if customer is not as noble as she is, for example), Malicious, Tsundere, Aggressive. Shy and Mind Fucked too, as unable to talk down the costumer at all.
Cause of a conflict traits are Cleptomaniac because of disclosed stealing, Depression (bad mood = insulting a custumer), Clumsy (drop something right on the customer).
Charismatic, Sexy Air. Any "good" physical traits, as Bloodkiss mentioned before, like Abnormally Large Boobs, Long Legs and so on.
Maybe a little mind control with Magic Talent or Psychic traits. Artificial Body - not many people want to fight with a construct (maybe Manly too, but not as much as Artificial).
I am actually considering writing code that would remove traits like Fighter and Assassin from Prostitutes/Strippers, I am still not entirely sure it's a good idea but it should at least be on the table.Well, if character does have battle training according to the original source, she couldn't just instantly lose it. Maybe you could use for them (hidden?) traits like ex-fighter and ex-assassin.
Well, if character does have battle training according to the original source, she couldn't just instantly lose it. Maybe you could use for them (hidden?) traits like ex-fighter and ex-assassin.
Even if we talk about slaves or ex-slaves with sealed battle skills, they still have their psychological combat training, which means they ready for combat and don't afraid to fight back.
Do we have a trait or traits to represent someone with a no scruples or Conniver, etc?
I'm actually starting to look through some of Darks notes on traits now, Really like a lot of the stuff you have come up with thus far.
Not to make the game too ambitious but I thought now is probably the best time to bring it up rather then later on. Have we considered a criminal type path or profession? Someone looking to build a gang, criminal outfit or organization, perhaps manipulative route to earn fortune or favors from NPC's, maybe even ask shops for protection money, racketeering, etc?
Also this is just a thought. But something like a woman who gives in or uses her body so her enemy lowers there guard and then strikes or kills them even after they might even be asleep or naked during or afterward? *shrugs*
Do we have a trait or traits to represent someone with a no scruples or Conniver, etc?Btw, any ideas about new traits are welcomed.
I'm actually starting to look through some of Darks notes on traits now, Really like a lot of the stuff you have come up with thus far.
I've been a lurker for what seems like ever now. I would love to be able to contribute something for the time I've spent here. Are you still in need of writers?
Hi!
I believe for a game as big as this, there is always something you can write. I would suggest you read up on the game until you feel ready to contribute something, then write some texts and send them to Xela. That way you can start right away and won't have to wait for anybody to tell you what to do, as that might take a long time. If you're worried about duplicating effort I suggest you choose a topic that benefits from having many different texts for it.
All this reflects just my own opinion. I can NOT speak for the dev team.
Have fun!
rudi
How about more complex randomization of items in shops? For example, in WM you don't even need to go to the next week, simple save/load is sufficient for changing the assortment, and that's means you can immediately buy anything you want if you have enough money and patience.
The same items (at least consumable) should be placed in one slot, like 100 healing potions in one slot rather than 100 slots with one potion in each. Many games, including commercial, have this mistake.
How are you going to handle spells/skills? Will they be on sale in some special shops?
Also if we're gonna make items stackable, we should do that to all items, not just consumables.Maybe. Does player (and/or girls) have unlimited inventory?
I actually forgot about spells and attacks, I'll add that to items as wellI'm not forcing you or something. Selling spells and skills is the easiest way, but not the most interesting.
Maybe. Does player (and/or girls) have unlimited inventory?
I mean, in many games player has quite limited inventory and some kind of storage with unlimited or at least much larger inventory. So if any item is stackable but player's inventory is limited, it's kinda counterproductive.
I'm not forcing you or something. Selling spells and skills is the easiest way, but not the most interesting.
We could also use schools or special items (like in FFT, if you ever played it; you need to equip item and carry it for some time, eventually you will learn some skill), or even skill tree.
Anything else?Well, I'm reading WM Items.itemsx file now. It has such strings as Rarity (the likelihood of a sale in the shop), Infinite (whether this item stock is limited or not; simple things like basic healing potions should be available all the time), Badness (reactions of a girl to this item as a gift).
Well, I'm reading WM Items.itemsx file now. It has such strings as Rarity (the likelihood of a sale in the shop), Infinite (whether this item stock is limited or not; simple things like basic healing potions should be available all the time), Badness (reactions of a girl to this item as a gift).
What about things like drugs or maybe alcohol? I guess their acquisition is based on other mechanics since it depends on girl's mood and traits.
Hm, you mentioned "Should have some form of 'chance' for girl to buy the items while shopping", which is GirlBuyChance string in WM. Reaction to gift is different thing and different string. Buy some flowers or a pair handcuffs and get them as a gift from someone are two different things, after all :D
I never understood 'reaction to gift' since PCLove/Hate can also be changed by any itemAh yes, indeed. Somehow I never thought about it.
Ah yes, indeed. Somehow I never thought about it.
I didn't explore WM code closely enough, but if I remember correctly, it also has something to do with girl's preferences when she decides what item to equip.
However, while masochist or sadist would enjoy handcuffs, others, at best, remain indifferent.
So ideally some kind of good/bad traits string should accompany any item. Unless it will be too complicated for game mechanics.
Ok Xela I got a few things running in my mind and I'll see if I can work on some things in the upcoming weeks. It's like I got a brain rush or something... :D
Anything else?looks ok to me.
looks ok to me.
Only thing I would personally like to avoid is girls buying personality changing items on they own, that annoyed me in WM a little.
btw, after editing a lot of images for girls and thanks to few difficult (to my level at least) sprite requests from DarkTl, I believe I improved a bit at photoshop/gimp, so if anyone of you need something edited, maybe I can give it a try until we have a real graphic
Yeah it does make sense that a girl doesn't get an item that she don't like. Are you going to make the items have multiple categories and if they have too many things the girl doesn't like about that item it's less likely that she will get it?
thanks to few difficult (to my level at least) sprite requests from DarkTl, I believe I improved a bitYup, I was particularly impressed by your great work with Shurelia. You definitely have a talent for this.
Yeah, some rare superartifact should have badness = 0 (or even -100) to prevent any stupid auto-equipment ideas. The thing is, probability of buying of some item and its priority for auto-equipment are different things. You can merge them if you want to, of course, but this will be simplification.
One more thing, by chance to acquire the item you mean the chance to have this item available for purchase in the shop as well?
But even if you will give her Ultimate Armor of Invulnerability, she still wants to spend her money and buy some pretty evening dress she likes. Basically, if we don't use or turn off auto-equipment, we don't need it.
That reminds me, being able to turn on and off auto-equipment of each girl separately would be handy. With it we probably don't need this eqchance string.
Oh ok then, hey are you going to have quests where you can get items? Because if so I was going to do a special quest write for an item that is pretty neat to have.
Also, she can buy as many evening dresses as she wants as long as she does not equips them or reequips back to armor if she's a warrior.Just make sure girls won't buy several copies of one dress, it definitely will be annoying to see hundreds of them in each girl's inventory :)
Just make sure girls won't buy several copies of one dress, it definitely will be annoying to see hundreds of them in each girl's inventory :)
And good/bad trait list probably should has influence on probability of buying of an item too, not just equipping it. For example, if base chance is 20, and girl has 2 "good" traits, let it be 20+5*2=30.
any good trait simply ensures that a girl buys at least one item is a better approachYup, that's an interesting way too.
Yup, that's an interesting way too.
I'm still thinking about girl's reaction to the gift. Simple modification of PCLove/Hate values is too general approach. Ideally we should use the same good/bad trait list to take into account girl's preferences.
There are no PCLove/Hate stats in PyTFall (you know that btw since you've designed traits :) )Yeah, well, we have Disposition for such things.
Yeah, well, we have Disposition for such things.
Btw, let's clarify its interval. If I remember correctly, you mentioned max value = 1000? What about the initial Disposition value, how about 500? At this rate, close to 0 Disposition means hate, and vice versa.
If we are really into having girls do they own shopping, It would be nice if they can spend their money according to theirs actual needs. Like if girl's happiness stat is low, she will look for something joyful, if she's tired, for something refreshing... but it would probably make more sense as actions and not items
OK, let's use it from -1000 to 1000.
<items>
<item
id="Dummy Item"
desc="This is a dummy item for testing!"
icon="content/items/dummy_item.png"
price = '10'
hero = 'true'
infinite = 'false'
slot = 'Consumable'
badness = '0'
chance = '100'
eqchance = '22'
temp='0'>
<mod charisma = '20' />
<max charisma = '20' />
<min charisma = '20' />
<addtrait name = 'Sexy Air' />
<removetrait name = 'Retarded' />
<addskill name = 'Water 2' />
<removeskill name = 'Fire 1' />
<location name = 'Item Shop' />
<addeffect name = 'Dizzy' />
<removeeffect name = 'Poisoned' />
<goodtrait name = 'Strong' />
<badtrait name = 'Meek' />
</item>
</items>
One Piece girls are done. While it's possible to create packs for two or three other characters, they will lack several categories.
I think I'll convert Soul Eater pack next, after that probably FMA.
Well, even if we'll change categories name, or use some kind of tag system, or use another syntax for girls files, I already have all available good pics in my packs, and there is nothing we can do about it.
So the only case which should be feared is the sudden termination of development :)
but you give us a quite long list of popular series that must be unconditionally present on release, so I believe we are working on that :)
Because most of WM packs are just plain bad, it means doing almost everything from scratch and compared to that, any kind of renaming or tagging will be easy, so I also see no real difference doing it now or later if we want them anyway.
I will probably be able to do only some Bleach girls and few novel sprites this month, my time now is really limited because of graduation exams. But If it goes well, I expect I'll have a lot of time after that.
ok! If that's the case, I will finish a few more girls that I already started (few from Bleach but mostly Sailor Moon), but then I'll look for something else I could do.
Maybe after Soul Eater I'll try to create items xml then, unless you going to borrow them from some other game?
Indeed. Well, I propose head (helm/mask/hood/whatever), body (armor/dress), feet (boots/shoes), belt, hands (gloves/mittens/whatever), cape, two hands slots for weapon+shield/two weapons/two shields/one two-handed weapon; two rings, one amulet.
Besides, while you probably can't wear armor and dress at the same time, you still have your underwear, so one more slot for it (I'm not sure about MC, but if we'll ever create an opportunity for choice of MC sex, I guess female could use it). Or maybe two slots, for upper and lower parts, like in Otherworld.
In WM girls also can use things like manuals, magic spheres, strip poles and so on. So maybe one or several slots for manuals/books/tutorials as well? And some kind of slots for girl room? I don't think we should build and decorate every girl's room like in Alkion, but if you give her strip pole or huge magic sphere, she can't carry it all the time, isn't she?
Or we could just use several (maybe about 5?) "general" slots for anything that can't be equipped directly, including furniture, books and so on.
I looked at Alkion, it also has shoulderplates and leggings, but they seems like an overkill to me. It also has quick slots in belt, I guess you should put consumables into them for using during combat.
I'm not sure about magic/skills system we'll have eventually, but we might also use special slots for spell books or skill scrolls.
Books, spheres and manuscripts are simply consumables in WM.Huh? ???
personally I am against that at this stage of developmentI never said that you should immediately start to code it :D
Huh? ???
No they aren't, they're actually "Misc" type, and girls must equip them to have bonuses rather than consume (especially such definitely non-consumable "items" as a cat or a dog). They even able to equip several of misc items at the same time.
Besides, looks like in WM armor and dress have different types, "armor" and "dress", yes :)
I don't remember how all this works in WM, but maybe we should use two different slots for them after all.
I never said that you should immediately start to code it :D
But since we kinda make a third generation brothel game, and two other 3-gen games, SM3 and Otherworld, do have MC sex choice option (not to mention stats and traits), shouldn't we do the same thing at a certain stage of development?
I suddenly came up with another idea about item fields. For example, if you give a cat to a girl, maybe it could help her to generate some additional joy every turn? Or some rare amulet helps to restore a small portion of mp every turn, etc.
Unless it'll require a significant amount of coding, of course. What do you think?
Also, I'm ready to hear your explanation about items and classes.
Pet might be set to:I like the idea, sounds interesting. However, I think that Reusable string is overkill. The only game I know which remember such things is Sims, and its save files are really huge and long time to load.
Reusable: true
Destruct : false
Temp = 1
We still need to decide if we want shops to look like they do in Alkion/OtherWorld or give them a retro look like in old FF games.Well, I don't know about the others, but I never used WM option of buying items on behalf of a girl. It's too much trouble, much easier and quicker to give her an item afterwards.
Another issue is how to pass items to girls from player, do it in the girl profile screen or construct something like WM.
Ok, so why 3 rings slots? Not 2, not 8 or 10, but precisely 3? :)
About Add/Remove Effects string, maybe we eventually could use it for some rare healing armor or mp restoring amulet instead of creating a separate field for such effects?
Is it possible to create combat effects for a weapon by hit, like paralysis or poison with a certain probability?
What about hands? I remember there is "armband" item type in WM.
Since weapons can be one or two-handed, we probably need some kind of flag for that. And don't forget about shields, ie items that can be put in hands slot but you can't attack with them. Maybe even 2 shields at the same for low level mages for some extra protection?
I'm also not sure about weapon types names. If by dagger you mean piercing type of damage, then let's just use D&D classification: bludgeoning, piercing and slashing. Otherwise we'll have a spear of dagger type or a scythe of sword type. Kinda counterintuitive, I think.
What do you think about ranged weapons: crossbows, bows, maybe even guns or beam/other hi-tech weapons? I remember you mentioned FF7-like technological level, so...
I like the idea, sounds interesting. However, I think that Reusable string is overkill. The only game I know which remember such things is Sims, and its save files are really huge and long time to load.
Well, I don't know about the others, but I never used WM option of buying items on behalf of a girl. It's too much trouble, much easier and quicker to give her an item afterwards.
And since we are going to use icons, we probably should create the appropriate interface. WM items don't have them, after all.
Not mentioning that 'Бог Любит Троицу' :)Haha, I see. Ok, let it be 3 :D
We could add it, it doesn't make that much of a difference either way.I guess we can live without them. We already have additional cape and ring slots.
We can add any amount of attacks, just change the sound and damage modifier, give them a new name in BE and make sure bridge recognizes that. But if you're talking about more different between ranged and cc weapons than that, we would have to go with a different scheme for battle and that usually comes with a lot of extra work.Well, usually the difference between ranged and melee weapons determines in which row character can attack. In back row you can only use ranged weapon, but you also have more defence there.
Book that can keep increasing girls skills is weird...Wrong, in such games skill book just disappears after reading ;)
It will not effect savefile sizes by the way, I cannot see why it would, it's just couple more variables for girls, we already have more than a 100 and saving works as well as it did when we had 10.If we have 10 books and 300 girls, it means 3000 new records eventually, isn't it? Imagine even more books and more girls.
Basically I wanted Misc item to be the only one that can have 'per period' effects...Alright. Then maybe more misc slots, like two?
But we can create an interface like in FF styled games as well. You know, one with blue screen, item names and amounts available in the shop.I'll think about it then. I do not mind any of them, maybe we should arrange a voting somewhere :)
Haha, I see. Ok, let it be 3 :D
Well, usually the difference between ranged and melee weapons determines in which row character can attack. In back row you can only use ranged weapon, but you also have more defence there.
But if it means a lot of extra work, how about more D&D approach: melee weapons damage and accuracy are based on attack, ranged weapons damage and accuracy are based on, well, something else. Since we don't have dexterity, we could use agility or magic.
For hi-tech we could just use another sound and, for example, fire or electric type of damage based on intelligence.
If we have 10 books and 300 girls, it means 3000 new records eventually, isn't it? Imagine even more books and more girls.
But if you think it's ok, then it's ok. I never made a game before, after all.
For 2 000 000 interactions (around 400 000 girls in game), game crashes on next day.
For 200 000 interactions (around 40 000 girls in game), next day calculations take around 7 - 9 seconds. Saving takes 20 - 25 seconds.
For 20 000 interactions (around 4 000 girls in game), next day calculations take around 1 - 2 seconds. Saving takes 1 - 2 seconds as well.
For 2 000 interactions (a more realistic scenario of 400 girls in game), next day calculations and saving are instantaneous.
Alright. Then maybe more misc slots, like two?
I'll think about it then. I do not mind any of them, maybe we should arrange a voting somewhere :)
And one more thing, what do you mean by "Concealed Weapon" slot?
Wrong, in such games skill book just disappears after reading ;)
Concealed weapon is something that increases strength slightly but does not trigger such events.I see. Yeah, WM has two types of weapons, "weapon" and "small weapon". Obviously, you can't hide a huge spear in contradistinction to a small dagger, while both of them are piercing type. So we either need a "concealed" flag or two separate weapon types, like in wm.
I see. Yeah, WM has two types of weapons, "weapon" and "small weapon". Obviously, you can't hide a huge spear in contradistinction to a small dagger, while both of them are piercing type. So we either need a "concealed" flag or two separate weapon types, like in wm.
Anyone got anything to add???Not really, it's more complicated then I thought it would be already :)
Sorry, something serious come in and I wasn't able to follow for a while
Not really, it's more complicated then I thought it would be already :)
Maybe upkeep cost for some special items?
And about the shops, I think both icon and FF styles are ok. I would probably choose together with the style of player/girls inventory so these would look alike.
Well, WM has Beast Masters, if I remember correctly job's name. It's not exactly the same type of a "beast" (I would prefer to avoid beast pictures category at all), but still the idea is interesting.
We could create a new occupation to care about animals or even maintaining all items which need a maintenance. Or we could just use service occupation for such things.
Still, can't say that we desperately need it, so it's up to you.
Also maybe a temp field for consumables that would make sure that effects can wear off after a while?It could be done via temporary traits, but if you think it'll be better way, why not.
It could be done via temporary traits, but if you think it'll be better way, why not.
Yeah, but then one would have to design a trait for every effect, it's tiresome...If by the one you mean me, then it's not, I'll gladly continue to design as many of them as we need.
If by the one you mean me, then it's not, I'll gladly continue to design as many of them as we need.
One more thing, in many games when you drink a potion with some temporary effect, you can somewhere see this effect and sometimes even how much it will last. It's not a problem with temporary traits, but what about the other, non-traits way?
Anyway we might be able to collaborate on that? Maybe I could work on a few slots myself to help lighten the work load.Sure, I don't mind. Pick any slots you want to, just let me know about it first.
I figured anything conceptual I have should be posted here, instead of PM'd to Xela. So...
----Locations and Town Map----
Xela, I saw in one of your more recent posts that you're looking for ideas on location layout and how they should be handed. My idea is much like a hybrid of WM, Otherworld, and the existing system.
-Have an overall 'town map' for navigation through-out PyTFall. We could use a pre-existing image, create our own bird's eye image of a town, or perhaps even use icons on a blank parchment-type page (like the one existing in the gfx folder) to give the map a handmade, authentic map feel. Anything but the pre-alpha picture used now (way too restrictive an image to use).
-Consolidate most shops to a "Market Street", "Market Square", or the pre-existing "Central Plaza" location on town map. Basic shops (clothing, weapons, consumables) along with the slave market (e.g. Otherworld) would be located by icons or buttons on a market-themed sub-location. A couple BGs in the gfx folder would do well for this locale.
-Most other locations would be unique to meet free girls and/or fight baddies. "Forest", "Slums", and "Countryside" all have images corresponding to them in the gfx folder. Not sure how combat will happen (e.g. fighting in town) but with the way finding free girls has been implemented so far, having one main BG and 2-3 BGs for use when paging through present girls shouldn't be too hard to find for each location.
- Locations I've thought we could use:
*Market Street/Square/Central Plaza
*Slums
*Forest
*Countryside
*Red Light District (could be sub-location in slums. Good place to find prostitutes?)
*Docks (Also could be slum sub-location.)
*Temple
*Castle/Stronghold
*Park
*Arena
*Cave/Catacomb/aggro monster area
One more thing, I like new traits developed by Cherry. With Xela permission, I'll add them to our main traits file.
I was thinking about main map when I was trying to do dates/girlmeets. These are my 2c.
I believe Pre-existing image should by ok. I would prefer use of simple icons over text, ideally ones that change into text when mouse is moved over them. But it kind of depends if we want large edgescolling map or a small one.
The game will have a some minor dating locations, but I don't think these should show on main map, unless used as shops/girlmeet places too.
I think the main question is: Do we want main map to be used as a starting place of temporally events and quests?
Because if not, it all just could be static and that should be super-easy.
But the map could maybe also show stuff like one-run events in some places, traveling npcs, known girl locations... and then we would need a sorting system that would prevent placing these appearing icons over another ones.
I love maps where icons change, expand and adapt their positions accordingly do how many sub-locations and events are there, but I have only vague idea how much complicated it is to set up (because we didn't talked about events in detail either).
Simple solution could be just dedicate some place on map for that. Or maps-on-map for crowded locations.
Traveling npcs, huh?
If MC is able to instantly travel between locations, they will be just like random meetings in SM3. In order to give them some meaning we probably should restrict the movement of MC (with the help of action points, I guess).
I mean something like this (http://www.gmtgames.com/sekig/SekigaharaBaseMap100dpi.jpg), where you can't just go from the westernmost point to the easternmost instantly. Well, maybe you can within the city, but not within the continent.
Sorry, I'm not good at explaining stuff, but I made a Picture! (http://img24.eu/images/c5cjyry.jpg) :)
i am not sure what you mean, but it sounds doable if you want different gui based on amount of events currently available at the location.
Sorry, I'm not good at explaining stuff, but I made a Picture! (http://img24.eu/images/c5cjyry.jpg) :)
Not necessarily. We could also use scaling, so when you select a district you see its own little map with houses and icons. I think it won't be too hard to find suitable pictures for various districts.
Inspired by Overhao :)
But hey, don't talk about my lineart, that wasn't the point... I just wanted to ask about possibility of adding events buttons... same system, random city picture from distance: nothing selected (http://img24.eu/images/lpxiox09.jpg), center selected (http://img24.eu/images/enuxgc4.jpg), district 1 selected (http://img24.eu/images/ym1j39ew.jpg)
http://img593.imageshack.us/img593/8203/34500572.png (http://img593.imageshack.us/img593/8203/34500572.png)
<insert random sarcastic remark about the actual number of dev team here>
I'm thinking about reducing the displayed size of novel sprites to more standard "above knee" height. The main reason is that there are usually more images like that. But, while harder to create, it's kind of nice to see their legs... can you help me decide?
long 1 (http://img24.eu/images/maci1o8k.jpg) 2 (http://img24.eu/images/bwuxh1v1.jpg) 3 (http://img24.eu/images/q72wmw.jpg) 4 (http://img24.eu/images/gr265zy0.jpg) short 1 (http://img24.eu/images/i4ytvazh.jpg) 2 (http://img24.eu/images/o6kfx5zl.jpg) 3 (http://img24.eu/images/vii69hsx.jpg) 4 (http://img24.eu/images/29tgfwb5.jpg)
I'm thinking about reducing the displayed size of novel sprites to more standard "above knee" height. The main reason is that there are usually more images like that. But, while harder to create, it's kind of nice to see their legs... can you help me decide?
long 1 (http://img24.eu/images/maci1o8k.jpg) 2 (http://img24.eu/images/bwuxh1v1.jpg) 3 (http://img24.eu/images/q72wmw.jpg) 4 (http://img24.eu/images/gr265zy0.jpg) short 1 (http://img24.eu/images/i4ytvazh.jpg) 2 (http://img24.eu/images/o6kfx5zl.jpg) 3 (http://img24.eu/images/vii69hsx.jpg) 4 (http://img24.eu/images/29tgfwb5.jpg)
PS: @ Dark, I've removed backgrounds for your beta items, logic is almost done so I am going to use those for preliminary testing.Ah jeez, couldn't you mention that we need backgroundless pngs before I created 55 consumables with icons? :(
Ah jeez, couldn't you mention that we need backgroundless pngs before I created 55 consumables with icons? :(
But, while harder to create, it's kind of nice to see their legs... can you help me decide?Yeah, it's nice, but with legs they seem too far from MC for talking.
items with different backgrounds we are severely limiting possibilities of designIf you say so. I personally didn't care about background as long as it's not too ugly.
Cherry, would you like to help me with icons backgrounds? :)np, if you guys think I can help you with something, just send it to me and I try.
Ok, thanks. I've created icons folder in your shared part, just as before we need these pictures as backgroundless pngs.
PS: Striptease skill is called 'strip' in the game, you're writing it wrong in items.xmlNot just there, but in traits.xml as well. You know why?
Not just there, but in traits.xml as well. You know why?
Because we discussed stats once in this post (http://pinkpetal.org/index.php?topic=1291.msg18749;topicseen#msg18749), where you called it striptease, and never since then :D
Regret to inform you that you fixed it wrong, "stript(ease)".
Ok, I'll test it more tomorrow, but for now the game crushes if you try to equip Maid Uniform and it doesn't have wrist slot (or should I say, it's invisible).
Besides, did you code "hidden" field already?
Ok, I'll test it more tomorrow, but for now the game crushes if you try to equip Maid Uniform and it doesn't have wrist slot (or should I say, it's invisible).
Besides, did you code "hidden" field already?
Ok, so the slot is added and crash came from striptease in traits file (item was awarding traits)Btw, looks like your current traits file is old, it doesn't include Cherry's traits and some balance fixes. Don't take the new one for the time being, I need to doublecheck it for typos and syntax problems :)
Btw, looks like your current traits file is old, it doesn't include Cherry's traits and some balance fixes. Don't take the new one for the time being, I need to doublecheck it for typos and syntax problems :)
Hi!
:D
I'm not the most active member of this site by any means, but I am interested in what you guys are doing so a few questions to start me off:
1. Is there any working version of this yet? (would like to see what is there at this point)
2. I am not the best person for coding since I can only just do java and a bit of C, but I did read that you needed writers and I would like to think of myself as a decent writer when it comes to descriptions and dialogue so if you ever need some dialogue written if you give me the basics (location, context, characters involved) I can write you as much as you may need :)
Another (http://mycuteslave.blogspot.ru/) new, but quite popular slave training game for ripping texts and ideas :)
hey guys!
git is great, makes collaborating a lot easier.
I made a few changes to job and next day code to improve readability and make debugging, expanding and maintaining it a little easier. I commited those changes into a new branch in my local git repository. Do you want me to push those changes into the sourceforge repository (if so, how do I do that?) or should I upload the changed files into dropbox (but then you don't get to cherry pick the changes you like). What's the best way to share my changes with you?
rudi
Btw, I cannot use irc or skype at work because of our firewall, and I spend a lot of time there. So in my case forums are the best bet.
@Xela
Thanks. I've never used git before, but I learned to use (and cherish) Mercurial while working on Pytherworld. Since both are distributed version control systems, many concepts are similar, especially that branches are great and merging is relatively easy.
@mijh
I'll try to show up on IRC, but I don't know when I'll have time to do that as my life is pretty chaotic right now. Maybe you could just post the necessary steps here or add them to the document in the dropbox or send me a PM? I imagine it's something like:
1) register a sourceforge account
2) send you the account name
3) receive write permission to the repository
4) use a command like 'git push http://bogus.sf.org/repo (http://bogus.sf.org/repo)' to transfer the changes I made into the sourceforge repository
5) you choose the changes you like and merge them into the master branch
Btw, thank you for the dropbox document. It allowed me to download a copy of the game repository without problems :-) Very handy if you just want to start coding ;-)
Maybe put them in a simple tree for clarity? I mean something like this (https://dl.dropboxusercontent.com/u/79429937/91-1-1261188023.jpg) one.
Oh, and that assistant, the angel from the first Disgaea, if I'm not mistaken... Сonstantly seeing her in games tooltips since early Otherworld builds, I begin to hate her already :D
Not even sure we need an assistant btwMaybe, maybe not. I thought about using current matrona's portrait for this. Without any specific purpose, just as a decoration. And if the player doesn't have matrona yet, it could be MC's portrait.
Maybe, maybe not. I thought about using current matrona's portrait for this. Without any specific purpose, just as a decoration. And if the player doesn't have matrona yet, it could be MC's portrait.
Regarding module filenames:
Are you guys sure it is a good idea to have module filenames that include dashes and spaces ('-' and ' ')? You could not import such modules into a regular Python script, unless you mess with the import machinery (and maybe not even then).
Before it's too late, I want to raise a question about the magical defence again. Even without BE it's hard to imagine a proper comparison of stats with magic, but without md of any kind.
We could either add a general md stat, use intelligence or add resistance to every existing element afterwards.
Oooohkey. It may be an acceptable simplification for comparison, but not for the final release of BE.
nickname = 'Hinata'
. Would really be useful for text/events, there is no rush but next time you go to data.xml file or for the future packs, add it pls.Are you sure it should be 'Hinata', not "Hinata"?
fullname = "Hinata Hyuga"
name = "Hinata"
nickname = "Hinata"
Nelliel Tu Odelschwanckfullname = "Nelliel Tu Odelschwanck"
name = "Nelliel"
nickname = "Nel Tu"
I was actually thinking:I'm giving it a thumbs upCode: [Select]fullname = "Hinata Hyuga"
name = "Hinata"
nickname = "Hinata"
I'm giving it a thumbs up
Ok. And if nickname is not specified, it will default to name too.
Okay, the most important elements for the first, simple version of the image tagging system are now in place. Currently, this only means that we can select an image based on an image category (the first word in the image filename) and the folder the image is in, which are named after the characters. Is there any other information about the images, which we could use in the game right now?
Are there game elements, which already have a (prototype) design that should be implemented? If so, could you provide a link or description? Xela is already working on jobs, so they don't count ;-). User interface (screens and similar stuff) is also difficult for me as I have no experience with the renpy GUI elements.
Does every category has to be hardcoded? Why not create them on the fly while processing?What is a category? In the current game code (except for mine), every tag or keyword is called a category. So, currently category means the same as tag. Current tags include nude, date, profile, group, questangry and so on. These tags are created on the fly by the game by parsing filenames. Since filenames can only reasonably hold two or three tags per file, and we need more than that, we need other ways to store the tags for each image.
For sex pics: position. For any pic: mood. For any pic: location.I think we need a list of valid tags for each of these categories. Otherwise I don't see a way we can make use of the tags. We should also identify an ingame use for each category of tags we add.
Now, on to the use of category to describe the concept of a keyword on an image file. I propose to use tag instead because its a shorter word and carries a similar meaning. Then, a category could be something like mood or location. To say it again: IMHO, location should be a category, while brothel, stage, market street or bar could be tags of the location category.
I think we need a list of valid tags for each of these categories. Otherwise I don't see a way we can make use of the tags. We should also identify an ingame use for each category of tags we add.
I would love to take a look at the new jobs, but you have not commited the new code to the sf repository yet. Why not?
Ah, I understand now. Looking forward to the new code :-)
UPDATE:
Congratulations on our new subforum! Great job Xela (assuming you did that)!
Great to see things progressing quickly! :-)
By the way, as far as I know it is good practice to submit only changes that are logically releated in the same commit. So, basically every line in your post could have been its own commit. If we would follow that principle, we can use git to help fixing problems. For example, if we decide in a week or two that the changes to customer creation went in the wrong direction, we could revert those changes easily if they were their own commit.
We don't have to change anything now, but I think it would be a good idea to add only logically related changes to the same commit.
where is the download link is available of current version of game? :)
I've written most of the fixes/small add-ons while I was working on expanding job code and I wouldn't commit code while part of the game was in a broken state.I agree that we should not commit broken code to the master branch, but I do think that it is okay to commit changes to development branches, even if those changes break something at that revision. That is the reason why I always commit to some development branch until those changes are ready for the master branch.
I agree that we should not commit broken code to the master branch, but I do think that it is okay to commit changes to development branches, even if those changes break something at that revision. That is the reason why I always commit to some development branch until those changes are ready for the master branch.
A useful tool if you want to get a small fix into master while you've been working on something else is the 'stash' command.
Basically, all you need to do is open a git console for the pytfall directory and enter "git stash". This will store all the changes you made to your working copy since the last commit and then revert your working copy back to the state of the last commit. Now, implement your fix, commit it, go back to the git console and enter "git stash apply". This will restore the changes to your working copy you saved with "git stash". A more detailed explanation can be found here: http://gitready.com/beginner/2009/01/10/stashing-your-changes.html (http://gitready.com/beginner/2009/01/10/stashing-your-changes.html)
Classic RPG leveling (think Dungeons&Dragons) works like this:
1. 1000 XP total (0 + 1000 gained XP needed for level up)
2. 3000 XP total (1000 + 1000 gained XP needed for level up)
3. 6000 XP total (2000 + 1000 gained XP needed for level up)
4. 10000 XP total (3000 + 1000 gained XP needed for level up)
and so on
To reach the next level, you have to gain as many XP as you needed for the previous level plus 1000 more. That means gaining levels gets harder over time, but it gets harder rather slowly. I think it's a nice system.
Concerning leveling benefits, I think girls should gain higher skill caps, or 'power ups' or both. I'm against traits, as many traits represent things you cannot learn (unless we say it happens through "magic", at which point any further explanation is futile). Power-ups (we could also use the word feats) could be organized in trees and grant skill cap increases or skill boni that can raise the current skill level above the cap, or provide new skills to use (like Otherworlds classes do). If we decide to have power-ups, I would vote for turning learnable traits into power-ups (example: "Seductress" could be a power-up as you can learn to seduce people; "Angelic beauty" could not be a power-up as you cannot learn to look like an angel. You either do, or you dont). I think sibr1x had a power-up tree which I liked. We could do something similar :-)
Updated Sf:That's probably wasn't wise. Even leaving balance aside, some items could use better icons, and descriptions have to be checked for spelling.
- new items added (Dark's designs)
provide new skills to use (like Otherworlds classes do)When we'll have BE, we could use it for battle occupations to learn new spells/skills that cannot be learned by other means.
That's probably wasn't wise. Even leaving balance aside, some items could use better icons, and descriptions have to be checked for spelling.
When we'll have BE, we could use it for battle occupations to learn new spells/skills that cannot be learned by other means.
Actually, we could use slightly different trees for different occupations. Warriors don't need seductive skills, and whores don't need combat skills.
I've removed head slot but maybe we should simply flip 3 - 4 items from other categories and keep it? Would likely make more sense.I'm not sure it's a good idea to "flip" various capes and cloaks with hoods from cape and body slots to head slot. And, like I said, we simply don't have enough stats and traits to make interesting head items.
I'm not sure it's a good idea to "flip" various capes and cloaks with hoods from cape and body slots to head slot. And, like I said, we simply don't have enough stats and traits to make interesting head items.
The thing is, I don't want to create closed helms or other simple, cheap items that fully cover the face and give lame defence bonuses since we actually see characters faces on portraits all the time, and also because we already have gloves and boots for such bonuses.
So they have to be rather original and unique items with more or less unique properties, like small masks, tiaras, maybe headsets and visors if we will use hi tech eventually. You could return head slot if you want to, but I would prefer to not create head items until BE and stuff.
I changed school training into a job today, so please don't do it yourselves. I'm also fixing the bugs in the master branch, sorry about that (the school training job is part of that).
@Dark
I cannot download girlpacks from Mega for some reason, any chance you can up them elsewhere?
I personaly cannot download them, looks like Mega has drawbacks after all. Maybe it's unsafe to upload big files, since 320 Mb archive with wm ex girls is fine.
I've added fullnames stuff and portraits and uploaded packs to dropbox for now, grab them while you can :)
Well, you could either code MC and add to the game those portraits and battle sprites I've found, or make effects system the same way as traits system, so anyone could create them via xml.
Well, you could either code MC and add to the game those portraits and battle sprites I've found, or make effects system the same way as traits system, so anyone could create them via xml.
As I told you, you could also just upload the images and I'll do the tagging. Some parts of the code I used to generate to first batch of tag files exists only in the history of the tags branch. It's not very fleshed out as its not meant to be a permanent solution ;-)
I'll improve it when I tag the new images.
Btw, the bugs in master should be fixed in the latest revision, unless I overlooked something.
I thought you just implemented a temporary solution cause you did not have time to finish. You've completely removed 'per brothel' filters, now, no matter which brothel you sort by, every girls report and every brothel report is filtered into one list (obviously not as intended)Yes, I removed the per brothel filter because I tought we only support one brothel currently. I thought the next day screen depends on the brothel variable to determine which brothel is currently selected, but it actually doesnt. After reading the next day code many times, I now see that it actually supports several brothels. Sorry about that, I'll fix it. Does the whole game support more than one brothel?
Dark's girls annihilated all costumers in barbrawl/girl attack events, apparently most of them are warriorsLet's see, we have two battle androids from Xenosaga, all those ninjas from Naruto, technomages from Ar Tonelico, persona users from Persona and experienced melee fighters from Soul Eater. I guess characters from One Piece are the weakest among all ;D
you've had two mistakes in xml fileAh yes, I forgot to mention that I didn't have time for testing girls xmls. I'm lucky to have only 2 mistakes (hopefully).
Yes, I removed the per brothel filter because I tought we only support one brothel currently. I thought the next day screen depends on the brothel variable to determine which brothel is currently selected, but it actually doesnt. After reading the next day code many times, I now see that it actually supports several brothels. Sorry about that, I'll fix it. Does the whole game support more than one brothel?
Let's see, we have two battle androids from Xenosaga, all those ninjas from Naruto, technomages from Ar Tonelico, persona users from Persona and experienced melee fighters from Soul Eater. I guess characters from One Piece are the weakest among all ;D
Still, only androids are really powerful, both in the source and in Pytfall, since they literally have weapons of mass destruction installed. So it's your customers are weaklings, you have to make them stronger.
Ah yes, I forgot to mention that I didn't have time for testing girls xmls. I'm lucky to have only 2 mistakes (hopefully).
Huh? No they don't. And there is a link to Bleach, NGE and Sailor Moon packs (although only NGE girls have xml right now).
@CWI moved them from shared dropbox folder to private one, to save space and also because I'm still changing them a lot.
I thought you did some work on girl packs as well, are your girls included in Dark's pack??? I only found a link to a gallery with new pics for Hinata/Sakura/TenTen in your folder?
I moved them from shared dropbox folder to private one, to save space and also because I'm still changing them a lot.
But there's nothing new, as I did almost nothing in past two months. (But my school ended yesterday, so I should finally have some time from now on)
If that link can't be used, I upload them somewhere if you want. But it's like DarkTl said, I only have data file for evangelion girls now, rest are just stored images.
A gigabyte of new content? You guys are crazy :D
I've resized all huge pics to 1000x1000, and I'm fine with resizing them even more since I don't have/need megalarge display, but some people have them, so...I am using 1200x1200 as a limit size and 91 jpg quality for most of the images. That way 400 pictures have a nice 55 MB size. But I'm thinking about increasing it for new girls, because the artifacts are noticeable sometimes... but size rises really fast with quality... hard to decide...
A gigabyte of new content? You guys are crazy :DAnd you see nothing!
But my working folder have 47 140 images and over 20GB :D
I am using 1200x1200 as a limit size and 91 jpg quality for most of the images. That way 400 pictures have a nice 55 MB size. But I'm thinking about increasing it for new girls, because the artifacts are noticeable sometimesAh, I'm using 100 quality to minimize artifacts, and 400 pics have about 100 MB size. Still, it's much less than whithout resizing.
I don't see anything strange here, she had a hard life and she is able to turn to paper a whole damn sea :)
Well, I expect truly powerful characters to be found not in the streets, but in some dungeons and other dangerous locations.
As for initial stats, you should give us, packs makers, approximate values of power. I have no idea what means magic 70, especially since you mentioned that there is no absolute maximum, so I personally expected an average stat value about 200-300 after schools.
<ptraitinstead of simple
id="Paper Jutsu"
desc="Bla-bla-bla">
<mod magic = '40' />
<max magic = 40' />
</ptrait>
<ptrait
id="Toad Hermit Student"
desc="Bla-bla-bla">
<mod attack = '40' />
<max attack = 40' />
</ptrait>
<ptrait
id="Traumatic Childhood"
desc="Bla-bla-bla">
<max joy = -40' />
</ptrait>
<mod magic = '40' />It won't help us at all, but it will embellish the game and create a kind of uniqueness to the characters without millions of traits and skills.
<max magic = 40' />
<mod attack = '40' />
<max attack = 40' />
<max joy = -40' />
Then we would only have to teach the game to also load traits from character files (data.xml?).
loading traits from several character files some pseudo traits could be duplicated, so make sure to use warnings.This will definitely happen. At the very least, the result will be that we'll have two characters with a shared trait that gives different stat boni. Less than nice.
<ptrait
name="Paper Jutsu"
character_id="Konan"
desc="Bla-bla-bla">
If you mean my idea too, then if we eventually will use pseudo traits for decorating the game, they defenitely should have nothing to do with normal traits system, to not mess with it under any circumstances at least. Let's regard them as extended description, not real traits.
Sounds like a terrible bug. What was wrong?
We should set some guidelines on how to proceed when one of us wants to rewrite code that's already there. As far as I am concerned, any additions to the game should just be added without any talk and all new game elements can be written in any coding style/paradigm but when we're talking about rewriting code just for the sake of better code cosmetics, we should discuss what/why/when/who first.Fine with me.
Fine with me.
Thank you for the explanation :-)
If you want to, you could get the offending lines of code from the repository history and post them in the code review thread. I just looked at the history of the girl assign screen, but I could find nothing that seemed to match your description, probably because I don't understand what you mean.
for brtl in hero.brothels:
if brtl.highlighted:
$imgType = im.Scale
else:
$imgType = lambda *args: im.Sepia(im.Scale(*args))
vbox:
null height 20
text(u'{size=-10}%s' % brtl.name) align(0.5,0.5)
use rtt_lightbutton(img = imgType(brtl.img, 240, 150), return_value = ['brothel', brtl], tooltip = 'Send %s off to work in %s and choose from available actions.' % (chr.name, brtl.name))
for brothel in hero.brothels:
and at the same time we also had brothel variable in the label and while loop namespaces:label girl_assign:
scene bg wood
hide screen girlProfile
show screen pyt_girl_assign
python:
if isinstance(chr.location, Brothel):
brothel = chr.location
brothel.highlighted = True
brothel_selected = True
else:
brothel = None
brothel_selected = False
while True:
result = ui.interact()
if result[0] == 'brothel':
for brothel in hero.brothels:
brothel.highlighted = False
brothel = result[1]
brothel.highlighted = True
brothel_selected = True
return_value = ['brothel', brothel]
didn't actually return a brothel that came from iterating over hero.brothels in the screen (something any Python coder would expect, it actually works exactly like you'd expect something in Python to work since rtt_lightbutton itself is defined on the same namespace as label (it is in fact for all intent and purposes a separate screen itself), but it is still a bit confusing) but instead returned whatever brothel variable was set to in the label. As you can imagine, this is in no way a problem with one brothel but a rather nasty issue with multiple brothels that doesn't throw an Error making it very hard to catch.Anyway, the important thing is that the bug is squashed :)
BTW, I made good progress on the image tagging tool today. Since we decided to have uncategorized tags, I have to adapt the tool to accept those again. I did that today, and so far I have not been able to find bugs beyond those I already fixed. Tagging single images works. Tagging multiple images should probably also work, but I had no time to test it so far. Now its time to decide how the XMP tags will get imported into the game.
I improved lots of code this weekend. You can find my changes in the faster branch on sourceforge: http://sourceforge.net/p/pytfall/pytfall/ci/faster/tree/ (http://sourceforge.net/p/pytfall/pytfall/ci/faster/tree/)
My initial goal was to speed up switching from one event to the next in the next day screen. While reading through that code, I again stumbled over several things I think are problematic. Therefore, most commits in that branch restructure the next day logic and package it up into classes. In the last commit I somewhat achieved my inital goal.
Results: It turned out that most of the delay while switching to the next event results from loading the image. I subjectively "speed up" image loading by loading every image needed for the next day events before showing the next day screen. This results in an initial wait, but allows the player to switch between events very fast. I also restructured the code into classes, making it more robust.
On my machine, the wait after clicking next day is quite long, easily more than 5s. Preloading all event images is not a good solution, so I don't think we should do that. I did include this change in the faster branch so you can check it out yourself. I might do some profiling later to see if something else also eats performance.
UPDATE:
profiling seems to indicate that renpy.image_size takes a lot of time (about 50 out 180s ?). I'll look into it a bit more.
@Xela
Please look at the changes and tell me to merge them into master ;D
Except for the image preloading, I think they improve the robustness und maintainability of our code. I also fixed a few bugs. I did some testing and so far have not found issues introduced by my changes. If you greenlight them, I'll do more testing before I merge.
we used to add path to the image and call it on the next index.
I know. The problem with that approach is that it causes almost a second delay until it displays the next image on my laptop.
Preloading all event images is not a good solution, so I don't think we should do that.
# preload all images (renpy handles the caching)
for evt in self.allevents:
evt.load_image()
Edit: It takes 49 seconds for Next Day to load under your code with 106 acts. It takes less than 4 to load 906 events with old code. This is not a solution... this is a game suicide :(
It takes 49 seconds for Next Day to load under your code with 106 acts. It takes less then 3 seconds to load 1000 acts under old code. This is not a solution... this is a game suicide
I've implemented temporary fix for your Next Day index slowdown problem (should be nearly instantaneous now)Your fix improves things as the game loads less images now, but it's still nowwhere near instanteneous on slower machines like my laptop. Why do you call that fix temporary? If the game should always show a profile picture if no better picture is available, this is a change for the better and should be permanent.
Please halt on merging branches. I've ran a series of tests and faster branch (without image preloading) for some reason generates only 80 - 100 acts while the master branch generates 800 - 900 acts under the same circumstances. I've been coding for the better part of the day as well (as you can prolly see from the update) so I don't have any strength left to track down why.I'll look into this.
# select_image method should be rewriten to reflect realities of the game and require less calculation timeDo you have any support for your claim that the select_image method requires too much calculation time? And how much is too much?
Thats just not true. faster branch including the last commit loads every image needed for next day events before it shows the next day screen. master loads the images while you are clicking through them, so master should take about 460s spent on image loading while you click through the events.
So, the faster branch implementation is especially bad with many events because it might overflow the image cache. The idea of faster branch is to show you guys how fast switching between events can be when the image is already loaded. This behaviour is solely caused by the last commit and it was never my intention to merge it into master. I might have stated that more clearly...
The only way the implementation in master (prior to your fix) can be faster is if the player does not look at all events.
Your fix improves things as the game loads less images now, but it's still nowwhere near instanteneous on slower machines like my laptop. Why do you call that fix temporary? If the game should always show a profile picture if no better picture is available, this is a change for the better and should be permanent.
It's not a gamebreaker, but IMHO it is a serious problem. The speed of harddisks improves very slowly and SSDs are still too expensive to be everywhere, so faster hardware is not going to solve this problem. We'll need to tackle it sooner or later. As a player, I would not read the events often if it takes so long to load them.
Do you have any support for your claim that the select_image method requires too much calculation time? And how much is too much?
You guys have talked about that way of choosing an image being slow repeatedly, but nobody ever provided any evidence.
My profiling data says select_image requires a ratio of 0.0005, or 0.05 %, of runtime as calculation time. How could that be too much? We spend almost as much time just so we can have our own wrapper for the notify function. We also spend 10 times as much time in the dice function as in the select_image method. However, improving any of those mentioned to reduce total runtime is pointless.
You guys have talked about that way of choosing an image being slow repeatedly, but nobody ever provided any evidence.
Next day loading several minutes (we should get 1k events at latter points of development), even if index loading is extremely fast afterwards is a deal breaker and kills the game. If next day is loaded in 3 secs, player can use filters (once we have now and we'll install more in the future), he/she will be able to actually read and view pics/stat increases and close the next day, going through with the game. There is no point in claiming that both take long time to the same effect, time it takes to load and view all events might be comparable, but the game play experience is perfectly acceptable in one case and absolutely sh#tty in the other.
Your code actually cashes the images after you view them once, so you could have simply told us to go through a couple of images and revert to previous indexes to see the difference in speed :)Yes, I should have done that, but I did not think of this easy solution at that time.
Like I've said, game experience, we're not coding some theoretical modeling software, last I've checked, we were working on a game.Yes, we are. How does that make your claim that master takes less time to load acts any more true? ;)
My bad, my laptop is 5 years old, if not more, I've tested it there as well and did not notice anything I might have called a delay (not even mentioning how it runs on desktop).Maybe you are more patient than I am. A reaction time of almost a second is a serious delay in my book and quite annoying while playing a game.
It does have dedicated Nvidia GPU (old one but maybe it makes it run faster or something).GPUs should have no influence at all on the speed of our game. The IMHO singlemost important cause for the delay after clicking "Next Event" is loading the image from the harddisk. What's worse is that our image resize function does not use renpys image cache.
I've NEVER said that (at least while I was sober).You did not say it recently, but as far as I remember it took quite some convincing that it's not terribly slow when I first presented that idea to you. Back then we were still talking about Pytherworld. Anyway, maybe I just don't remember that right, it does not matter.
But if you did actual profiling and those were the results, it's all good.I did, using cProfile. I'm sure my results are accurate enough to say that select_image is no problem for game performance at this point.
I'll take another look to see if things can be farther improved, but I would still call it acceptable on Laptop and perfect on Desktop.You can leave that to me if you want to. I spent some time reading renpys sparse documentation and nice source code in order to understand renpys image caching. As far as I can tell, renpy preloads images sometime between instantiating the renpy Image and displaying it on the screen. Instantiating a renpy image as soon as possible should improve our situation.
I agree 100%. What is not true is your claim that the faster branch takes 49 seconds to load 106 acts while master branch takes 3 seconds to load 1000 acts ;)
You did not say it recently, but as far as I remember it took quite some convincing that it's not terribly slow when I first presented that idea to you. Back then we were still talking about Pytherworld. Anyway, maybe I just don't remember that right, it does not matter.
Xela, what are characteristics of your laptop?
I am not making that up, I've timed it :) I am talking about the time it takes Next Day to complete all calculations, no including paging through indexes obviously.
It's wasn't me, you argued with compuscribe about the whole tagging concept on old OW forum. I actually thought the idea was very interesting.:D I did argue with compuscribe, although our argument was more about XML vs. XMP tags. Well, sorry, I might have confused that.
2.4 Ghz Core Duo with 4GB of DDR2.Pretty similar to mine. I think that's a good benchmark. If the game runs okay on a machine like that, we should be fine. Not many people will try to play the game on slower hardware, unless we want to support netbooks and tablets too (which we should not IMHO).
I also saw that the image cache seems to know the size of the image it holds, so if we can figure out a way to get our image from the cache, we should be able to resize it without using renpy.image_size.
I also saw that the image cache seems to know the size of the image it holds, so if we can figure out a way to get our image from the cache, we should be able to resize it without using renpy.image_size.
Ok, I've found a new witch, a priestess, background and clerk for tailor shop.
Now nothing can prevent me from making monster girls :)
Ok, I've found a new witch, a priestess, background and clerk for tailor shop.
Now nothing can prevent me from making monster girls :)
Did I say she is a tailor? No I didn't.
She is a clerk. Tailors sew, don't trade.
While I surf through pics, I'm beginning to wonder how to use random girls most effectively. They have different eyes color (but at least they could be easily changed in graphical editor, maybe I should do that after I gather enough pics?) and different boobs size.
I guess we'll need quite advanced tag system here.
Btw, it looks like the current version uses tags to determine pics category. Does is mean we pack makers doesn't have to rename pics, and should use tags json instead?
Another elf from quenn's blade, this one has personality, so I included xml just in case.
I've found a way to handle pics without a source, at least with elves. There are a lot of them, so I'll make 2-3 blonde girls for a start: noble with big boobs, archer with normal, dark with dark skin. Eyes are not a problem, their color can be changed literally in 5 seconds.
We have to put the point in question about pseudo unique girls, those who don't have enough pics for a full pack. Either they could be a great addition to random packs, or we will use my idea with npcs. I can't decide, both options are good.
[
{
"id": "Rena_Elsword",
"desc": "Some Random Elf???",
"random_stats": {
"charisma": [10, 40],
"constitution": [5, 25]
},
"random_traits": [
["Tough", 50],
["Merciless", 10]
],
"force_location": false,
"force_status": false,
"occupations": ["Warrior", "Service Girl"],
"ab_traits": ["Shy", "Meek"],
"battle_skill": "FistAttack"
}
]
I'm not sure if random girls need description. They have either random or unknow prehistory.
And I don't understand what do you mean by force_location and force_status fields, as well as name field. If name field responsible for locations where you can find her, just call it location or something.
Otherwise, it's not confusing at all.
I see.
As for description, I guess I could write there something like "Captured forest elf" or something, but do we need that sort of descriptions in json? I guess the game should write it when you capture her, or "Wild forest elf" if MC persuaded her to join, etc.
As a side note, e-hentai has tons of little-known characters from various games. There is no need in using pseudo unique characters as a part of random packs.
So you could have a folder called 'elves' for example and have two girls there called elf_1 and elf_2, you can either make one data.json file for both of them or make data_elf_1_rulez.json file for one girl and datasecondelfisalsoawesome.json. Both will be loadedNice, unique ones could use it too.
Nice, unique ones could use it too.
What about using multiple clones of unique girls as random girls? I guess the easiest way is to make a copy of original pack with json instead of xml, but that means waste of hd space.
I still say, simply use some chars that could be unique and have pics. There is no rule saying that we should make every single character available as a normal unique girl...and that
I agree that we can use unique ones as well. But, like I said, together with Otherworld scenic concept, ie random girls are multiple clones (maybe created by an unknown technology, and because of that they do not need life-prolonging; or maybe not, and some of them will be replaced by new ones every 1-2 month if MC won't help them), and somewhere in game world there is a "real one", original unique girl with original stats and traits.So there're real clones made by MC and there're clones as another name for random girls.
Nope, I mean thatand thatSo there're real clones made by MC and there're clones as another name for random girls.
Well, if you want to use unique ones as random ones, you do need logic for it.
Anyway, I've found about 700 damn pics for 3 monster girls (those packs will be great :) ). I need a good long break from it, so tomorrow I'll try to deal with git.
I already have an account there, and Mijh mentioned you guys should give me access first. I don't think I have anything to do with the code now, but I could use access to content repository.
Username is darktl, ID is 4282926.
I wonder what'll happen if you don't specify borders for some stats of random character. Will they be 0 (except health, it would mean instant death I guess)?
Hm, and if you set it to 0 or less? Can a girl die at all while she is not a part of your brothel?
At least one trait reduces max health. So normalization is necessary.
So, do I have access to git or not? I don't see any changes in my account.
I'm not complaining or something, but it's you guys tried to convince me to join that thing. If you change your mind now, just say. I can live without it :D
Looks like you added me to the base code brunch. (https://sourceforge.net/p/pytfall) As far as I understand, Mijh mentioned that content/image repository is this brunch (https://sourceforge.net/p/pytfall/content).
Well, I can't be sure I do everything right, but I can't push anything to content branch.
git push ssh://[enter your sourceforge login here]@git.code.sf.net/p/pytfall/content/content master
Not to mention periodic "unexpected end of file" errors during downloading. I guess git is badly insured against transmission errors, so you have to be ready to download multi-gigabyte distributive as many times as necessary. Lol.
Alright, some conclusions for today. First of all, client starts throwing some errors about trees. If it means that I accidentally messed git repository, I'm sorry :(
Secondly, git may be useful for the source code, but it's totally unacceptable for content.
For testing purposes today I downloaded distributive ten times, and only two times it was successful.
Obviously, hereinafter the larger will be the size of the content, the smaller will be the chance to download it. We have to use anything else, like db, mega, maybe torrent after the game release.
Btw, what do you think about auction at the slave market? Otherworld has one, although its algorithm is fairly predictable.
About random girls, what if you using probability for mutually exclusive traits?
Like 50% for Agressive and 50% for Collected, or 80/20 for Average Boobs/Big Boobs. How the game will choose between them?
I see. Currently the only ones mandatory traits are boobs traits. It means that pack makers have to place Average Boobs with 100% at the very end of json if they make a roll for other boobs traits, otherwise there is a chance that some girls won't have boobs from the viewpoint of traits. Or it could be hardcoded like in wm ex, ie if some girl doesn't have any boobs traits at all, she gets Average Boobs automatically.
we should prolly turn it into location, not access it from the main screen?Yeah, I'll look for suitable pictures.
Hey all, I've been following the work on this and I have to say I'm eager about the potential it has.
Is there any chance you could give us an idea about how far through the roadmap you are?
Some screenshots would be nice too, but I understand there might not be anything worth showing off right now.
In any case, thanks heaps for your work on it. I'm really looking forward to seeing how it turns out!
Alright, some conclusions for today. First of all, client starts throwing some errors about trees. If it means that I accidentally messed git repository, I'm sorry :(
Secondly, git may be useful for the source code, but it's totally unacceptable for content.
For testing purposes today I downloaded distributive ten times, and only two times it was successful.
Obviously, hereinafter the larger will be the size of the content, the smaller will be the chance to download it. We have to use anything else, like db, mega, maybe torrent after the game release.
You've not updated random girls at the depo since I cannot get them. You need to commit content folder first, then merge it with master branch of content, then commit those changes in general master branch and only then push to the main master branchIt turns out that git is like a Black Hole for content, you can upload there all you want, but when it comes to loading, you will enjoy ueof errors.
Well, girlsmeets/interactions are problematic. I'm a bad writer no matter the language, even those descriptions for items were pain for me. And we probably won't get decent writers until the playable release.
Anyway, I dropped three random packs without enough pictures (that includes fairy, so we'll have to use unique ones one way or another in the future, I guess Eliont will be happy if I'll use characters from his favotite SAO :) ), now I'm finishing slime rmg. Then I'll make 2-3 rg androids for the city based on os-mascots. After that battle sprites for forest mobs.
It turns out that git is like a Black Hole for content, you can upload there all you want, but when it comes to loading, you will enjoy ueof errors.
When/if I'll work on the source code, then I'll use git.
As for uploading them, you can and will find links to my packs in my db folder in girls\links.txt.
Besides, it looks like that (at least for now) xmls and jsons will change frequently, unlike packs themselves, so on mega they will be without data files, those files will be in dropbox.
And speaking of data files, could you give me an example of the finished json for random girl? Or you still working on its concept and syntax?
I recall Roman making his own SOA pack.Yeah, I know. I mean he will be happy to see them in as many games as possible :)
About interface, instead of the cross in the top right part of the screen we need a big, noticeable button, like "go back" or "return to brothel", maybe in the bottom middle part.
Thats pretty difficult because we're kind of programming outside of roadmap at this moment, we've developed some parts of the game (logic mostly) beyond the original plan, however, since girlsmeets/interactions are at standstill, dev version is STILL at 0.29 even thought there is a lot of new code (prolly a few thousand lines) and a lot of new content.
This "average boobs" trait still makes no sense to me... what is the reasoning behind it?
// PS:Figured out that slave market is broken(Fixed), I'll see if I can fix that tonight along with adding boob traits checks on loading.
This "average boobs" trait still makes no sense to me... what is the reasoning behind it?Well, if you want to know, because wm ex has it, and I always liked it. A girl may not have long legs or nice arse, and since we use sexy characters from various games, anime, etc., they can't have short legs or ugly ass, for example.
Well, if you want to know, because wm ex has it, and I always liked it. A girl may not have long legs or nice arse, and since we use sexy characters from various games, anime, etc., they can't have short legs or ugly ass, for example.If you like it, then I'm totally fine with having it... I was just wondering about this trait a bit, because it's an exception from what I would expect (no big boobs or small boobs = average boobs, in same manner like I'm assuming hetero orientation and average inteligence/strenght/willpower/etc. on traitless girl).
But girls will always have boobs, and traits reflect it.
It's purely cosmetic trait of course, just like those pseudo traits I proposed earlier. If you prefer to not have any purely cosmetic traits at all, then I'll remove it.
Well, we'll figure out girlsmeets, lots of texts we can get at later points of development, like I've said, we can start with basics first.Ok, then, texts aside, is there something left to decide for basic version?
hetero orientation and average inteligence/strenght/willpower/etc. on traitless girlYeah, you have a point there. I guess you could call it an easter egg :)
Ok, then, texts aside, is there something left to decide for basic version?
we'll have to balance out the game (stats, traits, items, prices, awards etc.)I need a fully functioning brothel for a start to balance out items prices.
Prolly more...Yeah, you forgot about clones :)
I need a fully functioning brothel for a start to balance out items prices.
Yeah, you forgot about clones :)
Androids rg are done. Besides, if you need jsons for my random packs, they are now in db as well.
Tomorrow I'll start to work on the forest. I guess one such dungeon-type location will be enough for now.
We have a fully functioning brothel, don't we?Ok, fully functioning and balanced out from the viewpoint of daily income :)
I am beginning to think that random girls are enough for 1.0It's your call. I like the idea though, it has a potential. We definitely should not abandon it.
I am beginning to doubt exploration job for warriors before 1.0 os complete in favor of introducing new buildings where non brothel related guilds/activities can take place after original release.Then I propose to skip it, or make something simple. Like, create a gang (=party) from several girls and do about the same things gangs did in wm, except abduction. You know, extortion, patrolling, etc.
I am not even sure what we're gonna do with one at this point of development, but we'll figure something out.We need something to keep warriors and MC busy anyway. And I believe many parts of the forest will remain after 1.0, so it will pay off to some degree.
Ok, fully functioning and balanced out from the viewpoint of daily income :)
Can they be considered as such?
Brothels are our main source of income, at least until advanced system with multiple dungeons and arena. I need to know daily receipts at the beginning of the game with a small group of untrained girls, daily receipts with an average small brothel (I guess 15-20 girls with 10~20 level?), etc.
It doesn't matter if you can earn 50 or 2000 per day at the very begining, I'll balance out prices
accordingly. But we have to start somewhere, and I think this is a good place to start.
It's your call. I like the idea though, it has a potential. We definitely should not abandon it.
Then I propose to skip it, or make something simple. Like, create a gang (=party) from several girls and do about the same things gangs did in wm, except abduction. You know, extortion, patrolling, etc.
We need something to keep warriors and MC busy anyway. And I believe many parts of the forest will remain after 1.0, so it will pay off to some degree.
First thing would be establishing some ingame prices for "base units".I don't get it. What do you mean by these units?
Doesn't solve the problem I have with this concept, such gangs should be organized separately from brothel, like in a different building but adding that before 1.0 is premature.My point is it will be not difficult to code as a temporary replacement . Same random encounters behind the scenes we have with customers in brothels, but with more dangerous opponents.
I don't get it. What do you mean by these units?
My point is it will be not difficult to code as a temporary replacement . Same random encounters behind the scenes we have with customers in brothels, but with more dangerous opponents.
How do you figure? Texts of what happened during exploration would be required, tables to compare enemy stats with rewards and possible locationsJeez, WM doesn't have anything like that. As I said, you could just mimic WM gang system, but with parties of warriors instead of gangs.
Jeez, WM doesn't have anything like that. As I said, you could just mimic WM gang system, but with parties of warriors instead of gangs.
I do not remember all options wm has, but I recall protection racket (=fights with random enemy parties, just like customers), fighting with other gangs (=the same, more dangerous) and maintenance of security around the building (=the same, less dangerous).
Actually, since we have rmg and will have mobs, we might as well make a simple arena, and will expand it after 1.0.
It will require at least basic level of BE though.
The arena. I figured you have big plans for it, so maybe instead of exploration job could be used a simplified version of arena.
Heh, I guess you have to decide what do you mean by arena in our game, then we'll know if simplified version is possible :D
The thing is, if we'll make a simple arena, then 1) we won't need simple exploration job, not now, not ever; 2) we won't have to make a forest until 1.0, all items and mobs will be at arena.
Anyway, I've extracted a good deal of sounds, animations and battle sprites, time to sort them out.
I suddenly remembered one more thing about WM. Either it's feature of the engine, or misuse of a random number generator, but if you create a random girl with, for example, 1% chance of all ingame traits, then there will be a lot of girls with a huge number of traits.
If we will see the same picture, we'll have to limit the maximum number of traits for random girls.
How and where can I get play teh current version of PyTFall, Xela? Many thanks in advance.
They also have an awesome way of constructing battle backgrounds from two pictures (background and floor).Unfornutally, most of them have 640 × 320 resolution at best.
Xela, what do you think about the idea of limited resources, like food in Old Huntsman's game, during exploration?
Eating captured girls?!? I'm not even going to comment that. :-XWe are talking about the world after some global catastrophe, those girls are girls only in appearance, in terms of mind they are beasts. Still unpleasant, of course.
We are talking about the world after some global catastrophe, those girls are girls only in appearance, in terms of mind they are beasts. Still unpleasant, of course.
On the other hand, in Jack-o-nine-tails you can do about the same with normal girls, ie sell them for food. I guess Old Huntsman just love such things.
Anyway, like I said, we will have a lot of nonhumanoid mobs.
As for food system, I thought about quest line or skill tree teaching MC how to obtain food from special types of mobs after fighting them, ie monster birds, beasts, etc., and obviously not undead or humanoids.
I see exploration as a much simpler system built on backgrounds with logic running behind those backgrounds.You said yourself that you hated exploration system in OH's game, and now you describe the same one :D
You said yourself that you hated exploration system in OH's game, and now you describe the same one :D
stupid bear that kept killing meLol :D
some crappy fog system that messed up directionsAh yes, the fog. Nope, it doesn't mess up directions, more like randomise distance traveled. That's actually could be used to some degree in the forest, since MC is not a forest's inhabitant, and even if he has rmg forest's inhabitants in the party, they were captured and lived in the city for too long, so they cannot help, considerably at least.
need to restWell, rest is a good way to restore AP to me anyway.
loosing AP or some equivalent of AP during travelingThat's why I proposed food/water/whatever to loose instead of AP during traveling. As long as you keep fighting, you're out of danger. But if you prefer to avoid fights, run from battles (I guess we'll have "run" option in BE?) and so on, be sure to buy something eatable before leaving the city.
Ah yes, the fog. Nope, it doesn't mess up directions, more like randomise distance traveled. That's actually could be used to some degree in the forest, since MC is not a forest's inhabitant, and even if he has rmg forest's inhabitants in the party, they were captured and lived in the city for too long, so they cannot help, considerably at least.
Well, rest is a good way to restore AP to me anyway.
That's why I proposed food/water/whatever to loose instead of AP during traveling. As long as you keep fighting, you're out of danger. But if you prefer to avoid fights, run from battles (I guess we'll have "run" option in BE?) and so on, be sure to buy something eatable before leaving the city.
Lol, unless you are "smart" enough to buy infinite amount of food, it's not an argument. The game doesn't have sci-fi food synthesizers, at least yet.
If explorations are almost not dangerous, they are not explorations but walk in park. Since Xela doesn't want to spend AP on movement, and exploration engine is a simple slideshow without any real restrictions or routes, MC can return to the city immediately under all circumstances except for middle of battle (maybe, or maybe you could run anytime). And now you tell me that MC should have a couple of infinite resources as well. Damn, looks like my own house is less safe than wild forest in Pytfall.
We need to finish the Brothel management version while starting laying the groundwork for slave/girl training/capture, interesting city, balanced game, decent quests, arena and so on but we should not let our concepts get ahead of development order.
implementing a feature only half the way...is exactly what we going to do with the whole forest right now.
Another thing is that we can block returning to the city on quests that will become available as player advances far enough.We cannot. Without AP you can't do anything. AP can be restored in brothel only, since spending the night in outside of the city is not gonna be there before 1.0.
In exploration, next level of it will be blocked so player doesn't know what's there until a number of enemies are defeated or a quest is fulfilled (hence exploration) so movement is to a point restricted by that already. Also there will be powerful mods deeper into the forest so it will be dangerous enough.Challenging? Yes. Dangerous? Only if we won't have "run" option within BE at all.
We already have a decent amount of battle/exploration capabilities for 1.0. For example:Looks like a concept of arena rather than forest exploration: continuous fights to unlock the next level while standing still. Imagine 20-30 battles in a row on the same screen without elements of real exploration, for example finding a chest with goods, a random cave, or even simply moving somewhere. It will get bored very quickly.
1st Level of forest:
Required to kill 20 enemies to advance.
2nd Level of forest:
Required to kill 30 enemies
Then it would make more sense and be justified (things like a raiding/hunting trip deep into the forest (for a number of days) to get some rare/exotic monster girls for training/to sell/pit in the arena), making a system like that right now is to soon!Indeed. I proposed earlier to create an arena for 1.0 instead of forest and other dungeons, but you refused. Now you trying to make a forest similar to arena, except for the scenery ::)
...is exactly what we going to do with the whole forest right now.
We cannot. Without AP you can't do anything. AP can be restored in brothel only, since spending the night in outside of the city is not gonna be there before 1.0.
Challenging? Yes. Dangerous? Only if we won't have "run" option within BE at all.
Looks like a concept of arena rather than forest exploration: continuous fights to unlock the next level while standing still. Imagine 20-30 battles in a row on the same screen without elements of real exploration, for example finding a chest with goods, a random cave, or even simply moving somewhere. It will get bored very quickly.
What's the difference between the arena and the dungeon?
In dungeon you are on your own, for example if you low on health, don't have healing items and spells anymore and too far from the exit, well, it probably means that you are not well enough prepared, and time to pay for it or load the game. No middle ground.
At arena you have to defeat one or several enemy waves and claim your reward. Often you don't know how strong will be the next enemy, but after each wave or several waves you can exit if you want to and instantly get to safety.
In dungeon you have freedom of movement, including the possibility of getting lost in some cases. At arena you mostly stand on the spot, and enemies are coming to you.
That could work if BE we used was similar to tactic rpg. But it's not, it's a classic jrpg engine.
And what do we do when there will be a real arena?
Indeed. I proposed earlier to create an arena for 1.0 instead of forest and other dungeons, but you refused. Now you trying to make a forest similar to arena, except for the scenery ::)
There are plenty of great games where returning to safety is a given from any place/dungeon/location.I'm failing to recall decent non real time games in which you can instantly and for free return to home base from any dangerous location. At best you need an item in inventory (not the cheapest one btw) or enough mp for a spell (if you have a character knowing such spell).
That is one of the possibilities for Arena and bit different from what I proposed.
we were talking about basic exploration in the forest, not a dungeon
I'm failing to recall decent non real time games in which you can instantly and for free return to home base from any dangerous location. At best you need an item in inventory (not the cheapest one btw) or enough mp for a spell (if you have a character knowing such spell).
Yeah, I know you proposed another concept, I'm talking about arenas from other games. For example, your forest concept is very similar to arena from Darksiders 2. But it's a slasher, you don't have time to get bored during multiple dangerous battles there, you will die instantly.
Um, it is a matter of terminology. I call it dungeon because you fight mobs and search for items there. Like in any actual game dungeon.
Well, Kamidori is built on alchemy, about 90% of items could be only created, not found. I'm not against the same concept.
There are even rare components that could be found once or twice per game (but the game has infinite NG+, and you can carry over them).
forest system I proposed for 1.0 is interesting, engaging and offers a bunch of quests possibilities that Arena is not capable of providingAs long as you don't expect me to write dialogues for those quests :)
After creating another rmg I decided that I might as well create full SAO pack, and encountered a problem. At least one character, while having about 150 decent pics, doesn't have suitable pic for battle sprite, probably because she never participated in real battles. I expect more such characters in the future, so I propose check on presence of battle sprite, and in its absence character cannot be used in BE.
Or I could create "battle sprite" based on something like this (https://dl.dropboxusercontent.com/u/79429937/profile%20%2846%29.jpg).
It is prolly still to early to make new packs as we haven't locked all categories/tags/conceptI was bored :)
Many games go with generic pics (meaning pics that don't show the head/face) to fill in missing parts in a characters image portfolio.
- default black silhouette as battle-sprite for girl that have none
for entry in item.removeskills:
if entry in self.mskills:
if entry not in self.mskills:
self.mskills.append(entry)
if entry in self.mskills:Well done :D
if entry not in self.mskills:
Well done :D
I guess only poison should be removeable so far. There probably will be much more battle-related effects in the future, but I don't see any reason to remove effects that go with traits only.
As long as effect removes when its trait removes, of course.
I don't see charisma, joy and general sex stats.
What's the difference between Reputation and Fame? If you want to remove something, how about one of them?
I believe arena will be much sooner than court.
Is there something big left to do?http://pinkpetal.org/index.php?topic=1759.msg21726#msg21726
I noticed that their is no communication stat for the MC. Won't he needed it for the girlsmeets events? Maybe instead of creating a communication stat it could be a derivative of reputation and charisma. (maybe include intelligence and fatigue)
For trading I'd prefer to use SM3 approach, ie multileveled trait for MC, either from skill tree or after some special quests.
Not sure if we need speechcraft, but it could either be a secondary stat or another multileveled trait.
I wasn't really arguing for a speechcraft skill. I was asking if you were going to have the player invest resources into stats for finding and hiring girls from around town. Either answer is acceptable, and any that save time in programming is better for us waiting on the game.
I believe dmac asking if girls will have stats requirements that MC must meet before he will be able to hire them.
I can tell that eventually girls with the best stats will be mostly in remote, dangerous locations - when we'll have more than enough locations, ie most likely after 1.0. As for requirements, that's an interesting idea (that's why MC needs charisma, after all), but I don't care either way.
Yes what DarkTl said. I understand that it is a lot of work, but I was so disappointed with Sibr1x's girlmeet. It felt like they were all the same girl, but this would add a little something special without having to program every girl. I agree this is a post 1.0 project.
Have you thought about crowed funding? A few "niche" games such as this one got funded. For example: http://offbeatr.com/project/roundscape-adorevia-13608498081 (http://offbeatr.com/project/roundscape-adorevia-13608498081)
There was also Fenoxo's game that was funded with an insane amount (for this kind of games) but he's got a reputation.
I think fatigue bar should be inverted, ie full with 0 fatigue and vice versa. It's kinda confusing when similar bars work differently.
We still don't have a balance of any kind. I mean, we don't even have a poor balance, all values are pretty much random, this is our biggest issue.
And, like I said before, some traits have changed, so all checks during jobs should be updated.
After that I guess we could try to release alpha.
Nope. Maybe except for packs, right now I have 40 unique and 11 random girls. Plus Cherry girls, not sure how many he has now.
Is it enough for alpha?
One more thing, should I define all effects for traits by myself in their xml, or you will hardcode them?
That would be the most boring alpha ever :D
Well, a couple traits will have the same effect. I just hope it won't be a problem for the game engine.
Nope. Maybe except for packs, right now I have 40 unique and 11 random girls. Plus Cherry girls, not sure how many he has now.19(+3) unique girls (I'm not interested in random ones) that could be ready in about 3-4 days that I would need for updates and revisions. Now I'm working on haruhi pack (7 girls) and I'm expecting it will take me about 3 weeks to complete.
Is it enough for alpha?
19(+3) unique girls (I'm not interested in random ones) that could be ready in about 3-4 days that I would need for updates and revisions. Now I'm working on haruhi pack (7 girls) and I'm expecting it will take me about 3 weeks to complete.
@Xela
I'm sorry to hear that. Get well soon! We'll be here when you return.
$renpy.show('chr',what=chr.img('datebeach',resize=(700,600)), at_list= [Position(ypos = 0.77)])
$renpy.show('chr', what=chr.show('datebeach', resize=(700,600)), at_list=[Position(ypos=0.77)])
What do you think could make dates interesting?
And more importantly, what purpose they should actually have game-wise?
I believe successful date could depend on girl's character (=traits) and current mood, and how much MC actions match them. Remember when we talked about stats long ago, I proposed "in a mood for" idea?
...While you work on the exploration, I can start putting some girlmeets texts that CW found into the game.You want to do that all by yourself? I was expecting more that you'll just do some basics (or that we discuss a concept for that) and then explain to us how to add supplementary lines like these so I (or anyone else) could do it.
Those will build json image tag files based on file names so new girls can be added to the game by anyone.Cool, I'll test it.
Note 2 Dark: Couple of files are missing, slime girl and an elf I think.Ah yes, I was distracted by traits and items polishing so I forgot about them.
@Xela you mentioned this on other topicYou want to do that all by yourself? I was expecting more that you'll just do some basics (or that we discuss a concept for that) and then explain to us how to add supplementary lines like these so I (or anyone else) could do it.
Also, It's a quite long time since I ripped these texts so they're not updated and I'm sure I would do it a bit differently now
Ah yes, I was distracted by traits and items polishing so I forgot about them.
I'll update all jsons and xmls to new traits system as soon as I can.
Oh, ok, I thought you gave up on that. Actually the system works now and it works quite well, so any work you do on girlsmeets will be useful. I'll start writing new codebase for girlsmeets today to replace clumsy old version with a proper management class.
Yes, I gave up on making concept, writing logic, managing disposition and... pretty much everything else about it.
I can only offer that I will look through lines I have (and maybe get or write new) and try to add them under relevant places and conditions (like traits) in girlmeets, IF you can make an example for me how to do that. (I'm sorry that I can't do that myself) It's not much, but I still think it could save you some time.
I would also like to offer some of my time to help this project. I'm most likely to be able to either find images for you or proofread text for you, as those as my strongest skills. I could potentially attempt some writing for you, but I fear that it would be far less that useful :P
Even if I'm unneeded, good luck and I look forward to seeing how this project develops :)
chr_gm = Character(chr.name, color="#c8ffc8")
player_gm = Character(hero.name, color="#c8ffc8")
nvl_gm = Character(None, kind=nvl)
$jump(pytfall.gm.label_cache)
Xela, what is the minimum level of initial joy which is safe for using in xml/json? You mentioned girls will leave with low joy, so...
On the other hand, maybe we should give to players 1-2 weeks to improve the situation, since it's not player's fault in the first place.
I think we should give at least a couple of days or even a week before a girl will run away if you just hired her. Unless MC beats/rapes her or something.
Or we should exclude joy string from xml/json at all. If you actually cannot set joy more or less freely, it doesn't make sense anyway.
I would like to combine lines from more then one condition. For example, in interest label, if a girl is warrior and lesbian, to have a chance to display lines from both selections as answer.
if chr.occupation == 'Warrior' and "Lesbian" in chr.traits:
$chr_gm(random.choice(["Warrior Text", "Lesbian Text", "Mixed text?"]))
Also I would like to add "hello" line to display at the begining, where to put it?
And one more thing, game refuses to start without Rgirls, can I fix this or at least remove Rgirls from girlmeets somehow
content = None
with content = {}
in function. Make sure rchars folder is there even if it's empty as I am not sure if that will cause an issue. Otherwise game will load without rgirls.
Try something like this:Code: [Select]if chr.occupation == 'Warrior' and "Lesbian" in chr.traits:
$chr_gm(random.choice(["Warrior Text", "Lesbian Text", "Mixed text?"]))
That falls on to me, if you just use hello before you can start interaction, choices menu will be blocked. So I'll either have to code in a text window that does not block that menu and throw a greeting text (Hello/Hi/Hey at first, Hi again and so on after you've met the girl) or go with something more elegant like a bubble speech box for the greeting. Don't worry about that for now, there are plenty workarounds.Ok, I'll leave that for later.
I was thinking about something that would randomly select one from these conditions before selecting actual line. Like, it there are (Warrior, Lesbian, Retarded) forks, for girl that is Warrior and Lesbian, it would be 50% chance for warrior line and 50% chance for lesbian line. For girl that have all of these, 33% for each option. Or anything else that would allow something like that. (Maybe checking all and adding them to list?...I don't really know)
$gm_interests = []
if chr.occupation == "Warrior":
$gm_interests.append('gm_interact_interests_warrior') # This adds label name associated with girl being a Warrior to the list
if "Lesbian" in chr.traits:
$gm_interests.append('gm_interact_interests_lesbian') # Note that this must be another IF, not elif.
if gm_interests:
$jump(random.choice(gm_interests)) # This will make sure that all labels are chosen with equal opportunity and game will only try to make a jump if there is at least one label in the list.
else:
$jump("default") # Some default texts or a choice from a pool of texts if non of the conditions above could be applied to the girl.
Edit: Also, all stat will have defaults and there will be normalization methods in place. It's very easy to do, I am just still not sure about the proper acceptable ranges for stats.I guess I'll just ignore initial stats until we'll have a more clear picture.
I guess I'll just ignore initial stats until we'll have a more clear picture.
I've uploaded all my packs and jsons/xmls for them. I'll try to find more decent camp pics tomorrow.
I'm for arena. We do need some kind of simple dungeon though, either forest outskirts or good old catacombs, as a source of rm girls at very least, even if all items will be in shops and arena.
We have to adapt game's code to map editor anyway before we will be able to make a decent, good looking forest.
Girl Control could use more tooltips. I understand only Autorest and House Per so far :)
For some reason there were two copies of persona characters in db version, I've deleted excess ones, but they might appear again if you have them in your dev version.
As far as I understand, at arena we will fight for money, fame, maybe slaves with random parties consisting of random and unique girls which didn't join MC yet.
And you have to sign up for battle in advance, a few days or even weeks before it.
Not sure if I have anything major to add to this concept, aside from various modes (for example, some kind of ladder, like in Mortal Kombat games). Maybe limitation on party members, so you cannot take 3 people to one on one duel mode?
Also we have to decide what to do with characters without battle sprites. I propose to block warrior occupation for them and use only warriors inside BE, including arena.
I was Ill for most of the week so I don't have girmeet texts added yet.
Good for you...
And I'm having fun building two really huge packs :)
And I'm having fun building two really huge packs :)
I guess even if the project will be closed for some reason, I'll join rudi or eliont (or both) in order to packs do not gone to waste.
I looked at new Alkion screenshots, dungeon map looks interesting. I wonder what kind of BE Eliont is going to use.
Well, in Kamidori BE is basically turn-based strategy with rpg elements.
It means that there is no short generic battles, only large-scale ones, unless you have overleveled party. It means more focus on battles and less on brothels.
Another thing is that even overleveled archers and mages are quire useless compared to melee fighters because of counterattack limitations. Except for those few who have skills with very large attack range (which require 80-99 levels), and even they play a supporting role.
I guess we do need several BEs if we will use such approach :)
These days FF looks (http://www.youtube.com/watch?v=60nWEuj2wAI) like Devil May Cry or something :D
In old FFs I like front/back row concept, this way you need both melee fighters and mages/archers.
I also like Golden Sun approach, where you have 8 party members with 4 on the battlefield. Once per turn you can replace 1 member of active party if you want to, and if active party will be destroyed somehow, they automatically will be replaced by other 4 members.
Another interesting concept is Arc Rise Fantasia BE, where party members freely share their AP during battle with the only limitation that those who did nothing during turn will get significant penalty to defence.
Besides, if we want some "action", we could use something like judgement ring in Shadow Hearts, where you can't even use items, not to mention attacks, during battle without proper timing.
Rest I haven't played but they sound overcomplicated.Maybe in terms of coding, but not in terms of gameplay. They are quite handy compared to many other games.
I have a bunch of monsters battle sprites/portraits already, so as soon as you create a way to add them, we'll have them.
So, will we fight at the arena to the death? I guess with monsters we have no choice but to fight to the death, but what about enemy girls parties?
How those ladders will be maintained? Will they be created randomly in the beginning of the game, or there actually will be fights between girls even without MC participation?
What will happen if, for example, you meet and rectute a girl which occupies the first place? It's kinda like you have a winner without actual fight.
I mean, what will happen with the ladder? How are you supposed to fight with your own employee for the first palce?
Not necessarily the first place. If you hire fiftieth place, how will you fight for fiftieth place? I'm myself not sure how to handle this. Either you automatically get fiftieth place, or the girl should be removed from the ladder. Because if you have to fight with her after all, you might as well nerf her stats with items before the battle.
Or, for example, if you hire someone from 2v2 or 3v3 ladders, not necessarily from the top too, what will happen with the rest of their "team"?
And when we will make our first try to balance things out?
Basic displays of the sorting/tracking methods of Arena, these screens will be improved even for Alpha:Great!
Great!
I can't wait to add some NPC teams already :)
If I ever get to stuff like that... so much to do and so little time :(
How are girlsmeets coming?Terribly slow like everything I do...
Terribly slow like everything I do...
I'm still in a phase of adding texts and I need a few more days to get it into state when I would be at least somewhat satisfied with it. I didn't get to the logic yet, so it not playable in the slightest. (so if we are in a hurry, someone else could do it)
Meanwhile I'm busy with Touhou pack. It's extremely popular (in Japan) title, so I expect it to be the largest of all my packs both in terms of size and the number of characters.
As for npcs, I have no idea why we couldn't use one general class for everything, don't see any cons there. I believe we either should use girls that don't have enough pics for a pack as npcs, or simply use random ones.
I never heard about this title until I came across it at gelbooru and then read about it in wiki. It's amazing how many pics there are for each of the characters (20-60 thousands). I did not even venture to search for it at pixiv, even I don't have that much time (at least +30 thousands for every girl).You didn't know about Touhou? ??? Blasphemy! :D
Does anyone of you know a good site for getting pixxx.com edits?Sorry, I don't know of any substitute for it either.
I found recently an addon for firefox, "context menu image saver". It's very handy thing when you saving a lot of pics, like when you making a pack, for example. It has quite flexible settings, and you can save images with one click instead of default saving menu.
Addons? I'm using just 3 shortcuts
ctrl + mouse click (open new background tab / save image)
ctrl + tab (move to next tab)
ctrl + w (close tab)
and I'm constantly waiting for pages to load or getting messages like "please slow down - too many requests" on most boorus :)
Hey I just found this project and I'd love to help.
I'm a game designer
and a programmer,but I don't know python. It can't be harder to learn than c++ was. ;)
Help is always welcome :)
Any particular area of expertise? Maybe you can work on something specific that you are familiar with and enjoy?
It's less complicated than C++, still it's a whole different language. Just download the repo and take a look at it, maybe find something you're interested in? While Python might take weeks/month to learn and get used to, I've seen people coming from programming/IT background who figured out RenPy script in matter of hours. If designing some NPCs/Interactions is something that sounds appealing, you could prolly start right off the bat.
Oh but when I tried running the game just to see how it all came together it crashed after starting a new game. Is it supposed to do that?
Nope, it should work fine.Jup, I just redownloaded the whole thing to test it and it's working, both repo+mega and DB versions.
Jup, I just redownloaded the whole thing to test it and it's working, both repo+mega and DB versions.
Oh but when I tried running the game just to see how it all came together it crashed after starting a new game. Is it supposed to do that?Maybe you should post error report if you need help.
So Eliont is going to use real time and turn-based elements at the same time.
I personally think it will be extremely hard to balance out. Quick characters will be overpowered, since they will have considerably more AP per time frame, and the gap will increase with time. Same thing happened in disciples3.
I've found one decent background for arena yesterday, I'll see if I can find more.
--- launch game ---
INFO pytfall game directory: D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall\game
INFO pytfall Loading: Random Name files
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Traits
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Items
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Characters
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Brothels
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: PyTFallWorld
INFO pytfall Loading Random Characters:
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Dark_Elf.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Dryad.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Leafa.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Maid_Elf.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Noble_Elf.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Ranger_Elf.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/random_elves/data_Rena_Elsword.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/slime_girls/data_Slime.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/windows_girls/data_2k_tan.json!
INFO pytfall Loading from D:\Dev\Dropbox\SimBro Dev\renpy-6.15.0-sdk\pytfall/game\content/rchars/windows_girls/data_Xp_tan.json!
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Exploration
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Tag Database
INFO pytfall.tags loaded 6465 images from tags.json files
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Generating Random girls (+/- 350), they were loaded in PW class
INFO pytfall It took 14 secs to execute!
INFO pytfall Loading: testing mode
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: GirlsMeets
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Populating SlaveMarket
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Arena!
INFO pytfall It took 0 secs to execute!
INFO pytfall Loading: Generating Random girls (+/- 350), they were loaded in PW class
INFO pytfall It took 14 secs to execute!
INFO pytfall Loading: Generating Random girls (+/- 350)
INFO pytfall It took 1.20599985123 secs to execute!
INFO pytfall Loading: Generating Random girls (+/- 3050)
INFO pytfall It took 12.6220002174 secs to execute!
do you think it's worth it to give the whole 15k lines of gamecode that we have today a throughI guess you could do it before the second alpha, but it should be done before beta anyway.
I guess you could do it before the second alpha, but it should be done before beta anyway.
I've finished first five Touhou characters, and their pack is already the biggest one, so I decided to releasing them in fives. Also I think we don't have enough random characters, so I'm going to make several girls based on Dragon Quest.
We don't have any human rgirlsYup, they are all humans in DQ.
Also I am thinking we should prolly make packs with 3 - 4 pics best pics per category.Leaving aside the discussion about different tastes for different people, all pictures in my packs are already best from my perspective, without any significant flaws. If you or anyone else don't have enough space on hdd, just delete those you personally don't like :)
Leaving aside the discussion about different tastes for different people, all pictures in my packs are already best from my perspective, without any significant flaws. If you or anyone else don't have enough space on hdd, just delete those you personally don't like :)
.Leaving aside the discussion about different tastes for different people, all pictures in my packs are already best from my perspective, without any significant flaws. If you or anyone else don't have enough space on hdd, just delete those you personally don't like
my thoughts exactly, sorry xela! :-)
Ah, Naruto, One Piece and Persona are beta ones, I will look at them closer to the alpha release. All the rest packs are ready.
I thought we talking about random packs only.
But there won't be 3-4 good pics per category in my packs, unless I was unable to find more :)
just a question:
how does the hero gain AP?
its empty for a few days now...
it doesnt seem to refill with goin on to next day
and without ap he cant help defending while customer attacks
# --------------------------------------------------------------------- <-- delimiter
def next_day(self):
# ND Logic....
# -------------
self.itemCounter()
# Add here:
self.AP = self.maxAP + int(self.constitution / 20)
self.mod("health", self.max["health"])
self.mod("fatigue", self.min["fatigue"])
I've never coded that in, actually, I don't think hero does anything at all. He shouldn't be able to recover health and fatigue either... we've been focusing on code, not playability :(
You can add this to classes - characters.rpy file (Player class is the very first one, next_day method is last, after the delimiter)Code: [Select]# --------------------------------------------------------------------- <-- delimiter
def next_day(self):
# ND Logic....
# -------------
self.itemCounter()
# Add here:
self.AP = self.maxAP + int(self.constitution / 20)
self.mod("health", self.max["health"])
self.mod("fatigue", self.min["fatigue"])
i cant believe u coded it but forgot that u did it and now say he doesnt do anything o.O
EDIT: the code works fine
AP recovered(and recovers faster than its used as i only use 1 AP per day but gain all 7 of his max AP xD)
finally this butthead is of some use again^^
until u implement actual combat system(besides tifa quest) being a guard is the only use the hero has
Right now there is a 100% chance of fight occurring during the date and for as long as there is only one girl in the team, forest fights vs midgets does work. Arena will be the first place to do meaningful battles and I'll be surprised if I don't get dogfights done tomorrow...forest fights work?
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/pyt - screens - forest explore.rpy", line 5, in script
File "game/library/screens/pyt - screens - forest explore.rpy", line 5, in python
File "game/library/classes - support.rpy", line 670, in python
File "game/library/classes - support.rpy", line 759, in python
File "game/library/be/engine.rpy", line 390, in python
File "game/library/be/engine-battlefields.rpy", line 242, in python
TypeError: 'tuple' object does not support item assignment
statdict['exp'] = totaloff*0.2
for the guards to get expguard.exp += totaloff*0.2
now both girls and hero get exp
I think one of those guys that dissappeared shortly after beginning of the project made Haruhi. Or maybe it's yours, like Tifa, I don't remember.I made Haruhi, at the very beginning of the project, my goal had just been to find out if I could implement a meetable character at that moment, I never considered it done and someone else said they would make haruhi and a few other characters from that series.
Oh, and if you talking about those Naruto girls in the current dropbox version, they are not mine either.
always get this error:Code: [Select]I'm sorry, but an uncaught exception occurred.
Code: [Select]guard.exp += totaloff*0.2
now both girls and hero get exp
I made Haruhi, at the very beginning of the project, my goal had just been to find out if I could implement a meetable character at that moment, I never considered it done and someone else said they would make haruhi and a few other characters from that series.
Take her out of the game if no one has time to bring her up to snuff, I certainly don't have the time.
CW wanted to put some time into that but girlsmeets are more important.Yes, I try to complete that pack someday soon (more then half of the work is done).
They all are but that's not the right way to do that.
so y is the way i accomplished that wrong?
hero.exp += totaloff*0.2
As I've said, it'll work, it's not the right way since experience gained from guard jobs will no longer be displayed in girl reports.didnt know that
Basically the order of logic is:
1) All stats added to the dictionary.
2) They are displayed to the player.
3) They are applied to girls (in the future hero as well).
So it kills the displaying part.
Better way would have been leaving the old code and adding:ok changed itCode: [Select]hero.exp += totaloff*0.2
that would give hero experience without interfering with the system.
PS: If code is inside a loop, it might even give him XP several times :)
ok changed it
(and if u knew that y didnt u add it rite away? =P)
# ---------------------------------------------------------------------
def next_day(self):
# ND Logic....
for d in self.guard_relay:
for stat in self.guard_relay[d]["stats"]:
if stat == "exp":
self.exp += self.guard_relay[d]["stats"][stat]
elif stat in Player.Stats:
self.mod(stat, self.guard_relay[d]["stats"][stat])
# -------------
self.itemCounter()
self.AP = self.maxAP + int(self.constitution / 20)
self.mod("health", self.max["health"])
self.mod("fatigue", self.min["fatigue"])
self.guard_relay = {
"bar_event": {"count": 0, "helped": [], "stats": {}, "won": 0, "lost": 0},
"whore_event": {"count": 0, "helped": [], "stats": {}, "won": 0, "lost": 0},
"club_event": {"count": 0, "helped": [], "stats": {}, "won": 0, "lost": 0},
}
Newest version of Naruto pack is uploaded.
We really could use tag system though. A lot of pictures could be used for 2 or more categories.
In D&D exp and levels are everything. You cannot get permanently +1 to attack without level up, for example.
In our project you could use items or schools to rise stats anytime.
I figured levels could set max for stats (but you still could rise it other ways if you have enough money and don't want to wait for level up), give some health/mana/fatigue/whatever or be base for a skill tree in the future.
But we cannnot and shouldn't use exp system for balancing out battles.
I thinks we shouldn't use absolute blocks, we could make items that raise max stats expensive and rare enough, as well as schools. Otherwise anything that rises max stats will be useless.
Cleaning is a check of service against dirt level. The more was cleaned, the more exp girl will have. Or we could use some base exp award + dirt ponts removed by her, etc.
Or, since levels are secondary in the project, we could forget about them during checks at all and use stats instead. Like attack+defence+magic vs enemy attack+defence+magic. Or sex vs client libido :)
I am not saying that levels should increase max values, levels could simply enable the ability to increase max values.I think it's a good idea then. Maybe +5 to abs max per level or something.
I still can't tell if EXP system is worth the effort.I'm looking forward a skill tree, also some items, spells, occupations, jobs, etc. could require some min lvl in order to be available. Level could be quite useful for the balance too, like if you were lucky and got high-temperature plasma destroyer from the first mob, you still need 100+ level to use it :)
I think it's a good idea then. Maybe +5 to abs max per level or something.
I'm looking forward a skill tree, also some items, spells, occupations, jobs, etc. could require some min lvl in order to be available. Level could be quite useful for the balance too, like if you were lucky and got high-temperature plasma destroyer from the first mob, you still need 100+ level to use it :)
Another question, do you think that characters that were defeated in the arena should still get bonuses (like possible stat increases/exp gain).In most games if a character was defeated, s/he won't get anything. At best, s/he will be revived with 1 hp after the battle - I guess this is an option in case of arena.
We should also figure out some absolute max values for different classes at the start of a game, prolly enforced by the code...How about +1 or 2 to abs max per level for non-core stats? Like attack for a whore or sex for a warrior.
In most games if a character was defeated, s/he won't get anything. At best, s/he will be revived with 1 hp after the battle - I guess this is an option in case of arena.
Actually, I find it difficult remember any game with exp system where you get exp being unconscious or dead. Let's not simplify things too :)
How about +1 or 2 to abs max per level for non-core stats? Like attack for a whore or sex for a warrior.
elif key == 'exp':
if self.__dict__['effects']["Slow Learner"]['active']:
self.__dict__['exp'] = self.__dict__['exp'] + int((value - self.__dict__['exp'])*0.95)
elif self.__dict__['effects']["Fast Learner"]['active']:
self.__dict__['exp'] = self.__dict__['exp'] + int((value - self.__dict__['exp'])*1.05)
else:
self.__dict__['exp'] = value
while self.__dict__['exp'] >= self.__dict__['goal']:
self.__dict__['goal_increase'] += 1000
self.__dict__['goal'] += self.__dict__['goal_increase']
self.__dict__['level'] += 1
for stat in Girl.Stats:
if self.__dict__["max"][stat] > self.__dict__["lvl_max"][stat]:
if self.__dict__['stats'][stat] + self.__dict__['imod'][stat] == self.__dict__["lvl_max"][stat]:
amount = self.__dict__["max"][stat] - self.__dict__["lvl_max"][stat]
self.__dict__["lvl_max"][stat] += 5
self.__dict__['stats'][stat] += min(5, amount)
else:
self.__dict__["lvl_max"][stat] += 5
else:
self.__dict__["lvl_max"][stat] += 5
Might be simpler to give some points to player to distribute freely...It could work for slave training or MC himself, but why are you supposed to control free girls during level up?
It could work for slave training or MC himself, but why are you supposed to control free girls during level up?
I guess we could use random distribution for them depending on occupation.
I dont think we should do that, this is what schools are for.
elif key == 'exp':
if self.__dict__['effects']["Slow Learner"]['active']:
self.__dict__['exp'] = self.__dict__['exp'] + int((value - self.__dict__['exp'])*0.95)
elif self.__dict__['effects']["Fast Learner"]['active']:
self.__dict__['exp'] = self.__dict__['exp'] + int((value - self.__dict__['exp'])*1.05)
else:
self.__dict__['exp'] = value
while self.__dict__['exp'] >= self.__dict__['goal']:
self.__dict__['goal_increase'] += 1000
self.__dict__['goal'] += self.__dict__['goal_increase']
self.__dict__['level'] += 1
for stat in Girl.Stats:
if self.__dict__['stats'][stat] + self.__dict__['imod'][stat] >= min(self.__dict__["lvl_max"][stat], self.__dict__["max"][stat]):
adjust_stats = True
else:
adjust_stats = False
self.__dict__["lvl_max"][stat] += 5
self.__dict__["max"][stat] += 2
if adjust_stats:
l = range(1, 6)
l.reverse()
for i in l:
if self.__dict__["stats"][stat] + i <= min(self.__dict__["lvl_max"][stat], self.__dict__["max"][stat]):
self.__dict__["stats"][stat] += i
break
So I've kinda came to a compromise, now levels increase both level max and absolute max but by different amount (abs = 2, level = 5).Sorry, I kinda don't get it. What is level max? Usual (non abs) max for stat?
About death at arena, I believe those who died should get penalty to fame (or reputation, don't remember which one you can rise at arena :) ).
Sorry, I kinda don't get it. What is level max? Usual (non abs) max for stat?
I see. Yeah, I like the idea.
they are written around monster level, not vs level of other characterIt doesn't matter if you fight against monster or character, level is level.
It doesn't matter if you fight against monster or character, level is level.
On the other hand, in d&d all exp you could get not from killing (like quests) is predetermined and does not depend on level. Since we'll have a lot of ways to get exp (like jobs), I guess we cannot use d&d system only.
For example, in case of cleaning low level girl will need less exp to level up, but she (usualy) has less service/fatigue/whatever, so she will get less exp per shift too.
Not entirely true, they have a table of CR (kinda like monster rating), each monster has it's own CR and exp bonus depends on it.Here (http://www.wizards.com/dnd/DnD_DMG_XPFinal.asp):
An NPC with a PC class has a Challenge Rating equal to the NPC’s level. Thus, an 8th-level sorcerer is an 8th-level encounter. As a rule of thumb, doubling the number of foes adds 2 to the CR. Therefore, two 8th-level fighters are an EL 10 encounter. A party of four NPC 8th-level characters is an EL 12 encounter.
We need to agree on a system and roll with it.I'm not sure how they could work for a cleaning or any other job where you don't even have a customer with some lvl.
Here (http://www.wizards.com/dnd/DnD_DMG_XPFinal.asp):I'm not sure how they could work for a cleaning or any other job where you don't even have a customer with some lvl.
I'd prefer 1 or 3 though.
Actually, I figured we only going to use levels progression from d&d, not exp system itself. It's too complicated for a brothel game, so I was kinda surprised :)
Maybe about 500 more exp needed for lvl up per level? It won't be that great difference, but still not linear.
If/when we'll implement occupation changing system, I wonder if we should do something with character level and/or stats. For example, in d&d multiclass has significant exp penalty.
No I don't. I mean permanent change of occupation, maybe when disposition is high enough to ask a girl about it, or through a school of some sort.
You might want to use renpy to set both pictures of the fighters ... then have the loser fall away and the winner enlarged or something.
That way you can have individual winner screens. You could try to have several different ways of removing the loser...
Lot of good ideas read so far.
Keep up the good work.
Mmm, what do you mean by messed up?About two months ago, I've reworked most of the class images for better look in school menu. But Xela probably did not update that in his development version, which now after uploading resulted in a strange combination of old and new images in DB folder.
About two months ago, I've reworked most of the class images for better look in school menu. But Xela probably did not update that in his development version, which now after uploading resulted in a strange combination of old and new images in DB folder.
I'll make some improvements there too then. Like deleting really bad ones and renaming.
My condolences :(
Another example of character status screen, from Agarest this time. I like that polygon thing, we could use something similar. Maybe one for combat and one for non-combat stats.
Hm, I wonder. We could use it for combat stats only (att, def, ag, mag, maybe mdef in the future or luck) at arena. You don't need other stats there.
Don't know if we should show them before the battle, but they might look good at post fight screen.
What can I say, less 'playing' with Rukia and more coding ::)
I think schools pics are ready. Some of them have quite low res, but if you won't use them as full screen backgrounds, it shouldn't be a problem.
What can I say, less 'playing' with Rukia and more coding ::)
School pics in your db pytfall folder, ibid where they were.
btw dude could u change the girls list screen?
i have more than 23 girls
and evry girl's name from the 24th in the girls list is beyond the screen and i cant scroll down........
i have to go into girls sheet of 23rd girl and click next until i get to the girl i want........
screen pyt_girlslist:
if len(hero.girls) > 0:
side "c r":
align(0.0, 0.2)
viewport id "girlslistvp":
draggable true
mousewheel true
maximum(1270, 700)
hbox:
box_wrap true
spacing 10
for girl in hero.girls:
textbutton '[girl.name]':
minimum(230, 30)
maximum(230, 30)
xfill true
action Return(['choice', girl])
vbar value YScrollValue("girlslistvp")
use r_lightbutton(img=im.Scale("content/gfx/interface/buttons/shape69.png", 40, 40), return_value =['control', 'return'], align=(0.99, 0))
I'm down with flu this week, so I cannot be much of a help. Hopefully, I'll feel better close to the weekend.
I'm down with flu this week, so I cannot be much of a help. Hopefully, I'll feel better close to the weekend.kissing/sex helps healing..........
kissing/sex helps healing..........
not kidding.............
Might also help spreading it around a bit...acceptable side-effect =P
I really hope you are trolling or something (http://th05.deviantart.net/fs71/PRE/i/2011/241/1/7/itachi_no_facepalm11_8dd_by_tayui-d48957n.png)since u r sick i wanted to brighten the mood a bit by joking around a little(though kissing rly helps healing since u give part of ur illness to ur kissing partner...)
Sorry, it doesn't seem funny to me. Because that's how I got it in the first place ("part of the illness", right; more like a copy (http://s001.youpic.su/pictures/1382212800/399d547294bafb0c0fc2f3549a6caec1.jpg) (http://youpic.su)).lol then dont play lovey-dovey if the other one is sick xD
I wonder if we should add something like that in the game for MC :)
@CW: Any progress on girlsmeets texts or have you been slacking off as well?Yes, you can say that. It turned out that I'm just terrible with this kind of stuff. Hard to speak about any progress at all...
We should improve equipment doll, I think. Otherwise, looks good enough for alpha and beta to me.
Those resources are awesome btw, I've ripped some of them to use elsewhere as well, maybe more later...Those ones in db are just a small part. I'll rip more tomorrow (while I'm still on sick leave :) ).
Maybe post Alpha?Ok, maybe for beta then.
I guess rudi is busy with rl these days. When are you planning to release the first alpha? Can we afford to wait for tabs?
I ripped some more resources, including backgrounds. There are characters pics, sounds and movies left, I doubt we need them, at least at this point.
I tried tagging software and never felt great need for tabs, basically as far as I am concerned, it's ready for tagging.Did you try it with a couple of pics or with a pack with 1000+ pics ? :)
Did you try it with a couple of pics or with a pack with 1000+ pics ? :)
I tried tagging software and never felt great need for tabs, basically as far as I am concerned, it's ready for tagging.
On the release date:
This is what I would like to get done before the Alpha release:
- Adapt jobs to work with new traits.
- Add virginity checks to whore job/school.
- Improve girl's profile screen, even if only slightly.
- Wrap up hero profile screen.
- Finish really basic exploration. (just two or three tile types)
- Girlsmeets.
- Interactions.
- Basic intro, prolly without MC choice for the alpha.
- Naming of player team.
- Really basic world AI. (first babysteps)
- Fix couple of things in shops.
- Maybe a couple of extra locations.
- One or two NPC's.
Arena:
What we have now:
- 3 Lineups.
- 3 Ladders (matches).
- Reputation Lineup.
- Working dogfights.
- Working Automatic combat resolver for official matches along with rewards and new placings in ladders + basic reports (daily).
- Arena "King" logic, but without NPC/some story it's quite useless at the moment.
- Some screens obviously...
What I want for the Alpha:
- Player challenge for the matches.
- Some intro, maybe with NPC
- Gold rewards
- Team formation through JSON.
- Creatures/Monsters through JSON and separate fighting events for them.
Some of it is really easy and can be done quickly, some stuff a bit more time consuming. It's hard to put timeframe on it at the moment, but my guess would be 3 - 4 weeks if I manage to put in enough time.
I'll take a look :)
Forget about characters for now, sounds we might use in the future. Movies are prolly useless.
Edit:
Some of that stuff is REALLY great... I'll convert those to png when I get the time, tonight I have some Arena stuff planned in.
The meetscript, do you mean a meetscript like with tifa as a default script?
I can probably make up a renpy script like that one is with about 10 different endings.
If the class is something I can read, I can probalby differentiate between warrior (battle), servant (getting beat up or raped) and prostitute (getting a bj or testrun or something).
Let me know if that's something you would like... you do have to check the girls dir for a script before running this one of course...
X
So if I understand correctly you need text written and do things that can change the dispositition. Like the girls in the park you now meet all the time till you have them all.
Like giving a certain gift (after finding out what the girl likes) can raise it a bit.. or just asking about her can raise it 1 time?
Do you have an idea if you want a "standard" set of rules or several type of girls.. some shy (like more shy things, books, small items) some in between (maybe some nice clothes nothing rancy or small jewerly and some outgoing of even horny (hot clothes or naughty items)
Just an idea. Maybe base it on class? that way you can have the girls react a bit differently... else you have to program every girl indivudually... which would take a looooot of time.
I always get stuck with texts. While I can imagine a lot of things we could have in girlmeets, and (with exception of giving gifts) it all also look relatively easy to code, I am just not able to write them in any reasonable amount of time. It take me hours to write a few lines, and we need plenty...
Sometimes it's because of my poor english, but often I just can't think of anything good to write at all, for example I still have no clue what girls should say when you try to give them money.
I was planning to do a simple one click = one response from girl system for alpha (simbro1x clone), and to try dates and chance for girl own actions (also simple) later.
I wanted to have 5-10 normal responses for both success and fail in each option and to replace these with supplementary lines for traits (the most basic personality ones: shy, polite, egocentric, unsociable, cheerful, high morals) in some cases.
Only chat/interest texts I wanted to choose differently, using list to gather lines from all conditions and then choose randomly from all that match.
For logic, I was just thinking about two simple checks: success chance depending on disposition range and if same action was chosen twice +slightly different numbers for some traits.
...but It all went poorly and now I have only some texts here and there and not even one category that I can consider complete. So any help is very welcomed.
I'm giving it a last try this week and after that I just send whatever I will have, because I stalled this for long enough.
I was under the impression that tagger software is not yet ready and that there will be some changes in tags before we start with tagging in bigger scale.
I'm willing to tag everything (but I have much less girls then DarkTl), but when I tested tagging on first two girls last time, there was a still a lot I was not sure about.
Stupid question.. but both Xela and CW use Simbro 1x as an example to talk to girls... where the @#$ do you find somebody to talk too :D?
That way I have an idea what you are talking about and maybe able to help sort it out.
The tagging thing is linking a certain picture with tag for a certain action like the file names in WhoreMaster?
CW gathered an impressive list of texts from other games, it can be very useful. If you want to see an example of what I'm talking about, try SimBro 1X. It's more basic there but idea is similar.
CW refered to it too.
But apparently i missed that part of the game.
I get a girl at the beginning, but talk to her... no idea how.
In Pytfall the girls now have some many options, it is a bit much.
That's why i suggest the occuption thing to help trim the talk structure
Even traits can add or remove conversation pieces
So you need interaction for girls already with you?
Or in the meeting place? Those interactions?
So if i do some work on the interactions for girls with player? I help you guys out?
The last interaction is now in the current http://hg.code.sf.net/p/sb-pytfall/code?
Because I'll start from there.
Btw there isn't a guard job.. to assign the warriors too. they only guard when you don't assign them anything..
label choice1_she:
if chr.joy < 50:
$ginterimg = chr.show('profilesad', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
player_gi "How are you feeling? "
chr_gi "I miss my family. "
chr_gi "I wish I could go home. "
elif chr.joy > 49 and chr.joy < 80:
$ginterimg = chr.show('profileneutral', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
player_gi "How are you feeling? "
chr_gi "I am fine! "
chr_gi "Everybody is nice and i'm adjusting to living here. "
elif chr.joy > 49 and chr.joy < 100:
$ginterimg = chr.show('profilehappy', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
$ char_id = chr.id
player_gi "How are you feeling, %(char_id)s? "
chr_gi "I am happy! "
chr_gi "I have friends and a good place to live in. "
else:
if chr.libido > 30:
$ginterimg = chr.show('profilehappy', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
$ char_id = chr.id
player_gi "How are you feeling, %(char_id)s? "
chr_gi "I'm very happy... "
chr_gi "How about I show you how happy..."
$ginterimg = chr.show('sex', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
"%(char_id)s takes of her clothes and starts working you. \nSoon she is riding you for all that's worth."
$chr.mod('normalsex', 1)
$chr.mod('disposition', 1)
else:
$ginterimg = chr.show('profilehappy', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
$ char_id = chr.id
player_gi "How are you feeling, %(char_id)s? "
chr_gi "I'm very happy... "
chr_gi "Sit back enjoy this..."
$ginterimg = chr.show('sex', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
"%(char_id)s slowly does a striptease act. \nAs she takes of her last piece of clothing, you both are a bit flushed."
$chr.mod('strip', 1)
$chr.mod('libido', 1)
if dice(10):
$ginterimg = chr.show('profilehappy', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
"She was glad you were worried about her. "
$chr.mod('joy', 2)
$jump('girl_interactions')
Coz what i had in mind was to trigger the battle engine for the warrior types (like guard duty where they are attacked in the city or some robbers or rapist in the woods) for prostitutes either an event of just a meet where you can talk to her. Have her do her job, maybe tip her and try to lure her away from her current boss maybe.
For healers with conversation use a bit of manipulation that the girls need somebody to cure and take care of them ect ect.
Those are just ideas.
If it's just conversation with keeping in mind occupation this could be an example
- Warrior
You: Hi,
Girl: hello,
You: how are you?
Girl: fine. what do you want?
You: Are you a warrior.
Girl: Yes of course. Can't you see my defined body?
You: I noticed, but didn't want to asume
+disposition
- Warrior
Conversation till Disposition > 10
You: Hello girlname
Girl: Hi
You: Had any interesting fights lately?
Random: 100
Random value >0 <45 {
Girl: Just some robbers and such. Nothing really good. + Disp
Random value >44 <97 {
Girl: Nothing really. It was nice and relaxing for a change + Disp
Random value >96 <100
Girl: Not really. I'm looking for something + Disp
You: Well I'm looking for some guards for my building.
Girl: Really?
You: yes I am. But you'll need to prove yourself.
Girl: And how would i do that?
You: Why don't you fight for me in the Arena?
Girl: Sounds good
+addGirl
- Warrior
If Disposition > 10
You: Hi girlname
Girl: Hi. How are you doing.
You: I'm fine, how are you?
Girl: I'm good now that you are here ++Disp
$ ginterimg = chr.show('profile', resize=(987, 637))
elif chr.joy > 49 and chr.joy < 80:
elif 49 < chr.joy < 80:
elif chr.joy > 49 and chr.joy < 100:
$ char_id = chr.id
player_gi "How are you feeling, %(char_id)s? "
player_gi "How are you feeling, [chr.name]? "
chr.nickname
chr.fullname
chr_gi "I'm very happy... "
chr_gi "How about I show you how happy..."
$ginterimg = chr.show('sex', resize=(int(config.screen_width*0.794), int(config.screen_height*0.802)))
"%(char_id)s takes of her clothes and starts working you. \nSoon she is riding you for all that's worth."
$ ginterimg = chr.show('strip', resize=(987, 637))
$chr.mod('strip', 1)
$chr.mod('libido', 1)
$chr.strip += 1
$chr.libido += 1
if chr.status != "slave"
Code: elif chr.joy > 49 and chr.joy < 100:
Some info: there are no limits like "100" to stats in PyTFall. chr.get_max("joy") will return whatever the highest value is available for a stat. You prolly know that since there "else" clause with libido checks follows.
Code: $ char_id = chr.id
ID is used by the game internally, also there is little point in assigning it to a new value.
Code: player_gi "How are you feeling, %(char_id)s? "
new Ren'Py style:
Code: player_gi "How are you feeling, [chr.name]? "
You can also use:
Code: chr.nickname
chr.fullname
whatever feels like the best bet for occasion, just not ID, cause IDs can be really weird at times (like partly randomly generated Unicode values for random girls).
label choice1_she:
if chr.joy < 50:
$ginterimg = chr.show('profilesad', resize=(987, 637))
p "How are you feeling? "
g "I miss my family. "
g "I wish I could go home. "
elif 49 < chr.joy < 80: # Between 50 and 79 She's fine
$ginterimg = chr.show('profileneutral', resize=(987, 637))
p "How are you feeling? "
g "I am fine! "
g "Everybody is nice and i'm adjusting to living here. "
elif 79 < chr.joy < 100: #Between 80 and 99 Happy
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How are you feeling, [chr.name]? "
g "I am happy! "
g "I have friends and a good place to live in. "
else:
#Joy = 100 so do something extra, depending on libido if over 40 sex else do striptease.
if chr.libido > 40:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How are you feeling, [chr.name]? "
g "I'm very happy... "
g "How about I show you how happy..."
$ginterimg = chr.show('sex', resize=(987, 637))
"[chr.name] takes of her clothes and starts working you. \nSoon she is riding you for all that's worth."
$chr.mod('normalsex', 1)
$chr.mod('disposition', 1)
else:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How are you feeling, [chr.name]? "
g "I'm very happy... "
g "Sit back enjoy this..."
$ginterimg = chr.show('strip', resize=(987, 637))
"[chr.name] slowly does a striptease act. \nAs she takes of her last piece of clothing, you both are a bit flushed."
$chr.mod('strip', 1)
$chr.mod('libido', 1)
if dice(10):
$ginterimg = chr.show('profilehappy', resize=(987, 637))
"She was glad you were worried about her. "
$chr.mod('disposition', 1)
$chr.mod('joy', 2)
$jump('girl_interactions')
label choice1_she:
if chr.joy < 50:
$ginterimg = chr.show('profilesad', resize=(987, 637))
p "How are you feeling? "
g "I miss my family. "
g "I wish I could go home. "
elif 49 < chr.joy < 80: # Between 50 and 79
$ginterimg = chr.show('profileneutral', resize=(987, 637))
p "How are you feeling? "
g "I am fine! "
g "Everybody is nice and i'm adjusting to living here. "
elif 79 < chr.joy < 100: #Between 80 and 99 Happy
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How are you feeling, [chr.name]? "
g "I am happy! "
g "I have friends and a good place to live in. "
else:
#Joy = 100 so do something extra, depending on libido if over 40 sex else do striptease.
if chr.libido > 40:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How are you feeling, [chr.name]?"
g "I'm very happy... "
g "How about I show you how happy..."
$ginterimg = chr.show('sex', resize=(987, 637))
"[chr.name] takes of her clothes and starts working you. \nSoon she is riding you for all that's worth."
$chr.mod('normalsex', 1)
$chr.mod('disposition', 1)
$chr.mod('libido', 1)
else:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How are you feeling, [chr.name]? "
g "I'm very happy... "
g "Sit back enjoy this..."
$ginterimg = chr.show('strip', resize=(987, 637))
"[chr.name] slowly does a striptease act. \nAs she takes of her last piece of clothing, you both are a bit flushed."
$chr.mod('strip', 1)
$chr.mod('libido', 1)
if dice(10):
$ginterimg = chr.show('profilehappy', resize=(987, 637))
"She was glad you were worried about her. "
$chr.mod('disposition', 1)
$chr.mod('joy', 2)
$jump('girl_interactions')
label choice1_you:
if chr.joy < 50:
$ginterimg = chr.show('profilesad', resize=(987, 637))
p "How do you feel about me? "
if chr.status != "slave":
g "I don't feel anything about you. "
else:
g "Master. I'm a slave."
elif 49 < chr.joy < 80: # Between 50 and 79 She's fine
$ginterimg = chr.show('profileneutral', resize=(987, 637))
p "How do you feel about me? "
if chr.status != "slave":
g "I'm ok with you. You're nice... "
else:
g "You're a nice master... "
elif 79 < chr.joy < 100: #Between 80 and 99 Happy
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How do you feel about me? "
if chr.status != "slave":
g "I am happy that you are nice to me. "
g "I know that I can rely on you. "
else:
g "You're GREAT!, master "
g "I'm very glad you are my master. "
else:
#Joy = 100 so do something extra, depending on libido if over 50 anal else do blowjob.
if chr.libido > 50:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How do you feel about me, [chr.name]? "
if chr.status != "slave":
g "You make me happy"
g "Why don't you help me do some backdoor cleaning?"
$ginterimg = chr.show('anal', resize=(987, 637))
"[chr.name] turns around and spreads her anus\nWith an invitation like that, you don't refuse\nYou trust in her anus hard and set a fast rhythm."
"After a passionate session, you cum in her ass.\nWhen you withdraw, the cum dripples to the ground.\n"
g "That was hot... we must do it again sometime."
else:
g "Master, makes [chr.name] a happy woman."
g "Fuck [chr.name]'s little hole? Please Master?"
$ginterimg = chr.show('anal', resize=(987, 637))
"Leaning against the wall, [chr.name] wiggles her ass"
g "Master, take your loyal slave."
"You stand behind her and stop her wiggling. After that a frenzied anal session follows\nAfter about 15 minutes she almost collapses, but you keep on trusting hard...\nAs you release your load, you shout..."
p "Take Master's seed, slave! "
"You fill her with a load.\nShe so tired, she drops to her knees and mumbles something\nYou come closer and hear:"
g "Master rewards [chr.name]'s for being good. [chr.name] loves master!"
$chr.mod('anal', 1)
$chr.mod('disposition', 1)
$chr.mod('libido', 1)
else:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
$ char_id = chr.id
p "How do you feel about me, [chr.name]? "
if chr.status != "slave":
g "You make me happy"
g "For that you deserve a reward..."
$ginterimg = chr.show('blowjob', resize=(987, 637))
"[chr.name] removes your manhood from it's confines \nShe starts to lick and suck it like a lolly\nAfter a few minutes of being expertly worked over, you both get your reward."
else:
g "Master, makes [chr.name] a happy woman."
g "Can [chr.name] suck Master's cock?"
$ginterimg = chr.show('blowjob', resize=(987, 637))
"[chr.name] not waiting for an answer, removes your cock and swallows it \nShe swallows it deeply and coaches you to release your reward.\nYou cum all over [chr.name]'s face."
"While she licks it off, she says:"
g "Thank you, Master for letting me please you."
$chr.mod('blowjob', 1)
$chr.mod('libido', 1)
$jump('girl_interactions')
$ char_id = chr.id
I used the ID because it was the first name. No other value that I could find, has only the first name of the girl.
It gives the question a bit more intimacy. But if id gets wacked... that's not an option.
I see in the Nature data.xml that name is usually the firstname.. only for Sakura and Hinata not... only i used those as a template...
Will use .name. Maybe wise to change the data.xml of the naturo batch.... kurenai, anko and such all have name as first name.
fullname="Nelliel Tu Odelschwanck"
name="Nelliel"
nickname="Nel Tu"
Most of the code was copy and change from the rest of the interactions.
I'll try to implement some of the suggestions, I am going to add # tags for explation.. so it can be read more easily.
The joy has a max limit of 100. And that limit works. I had it print the value when asking how she was.
I only saw 100 and not above that.
I found that in the character definition, because i need to now the max values and the names for everything.
Revamping it now with the suggestions.
Code: $ char_id = chr.id
This doesn't do anything, old code?
Then I'll probably get started on the topics that aren't there yet, if there are no objections.
P.s. for testing I usually define the joy, 2 to joy,25 on the how are you. That way you can test all the options.
I see in the Nature data.xml that name is usually the firstname.. only for Sakura and Hinata not... only i used those as a template...You should get access to shared dropbox folder. If you need up-to-date packs and xmls/jsons, look for them in my folder, not in Xela's.
Yeap, just for the record, you can call for Ren'Py console with "Shift + O", than simply type the command like "chr.joy = 100", it will work unless implicitly blocked by game (trait doesn't allow joy to go over 80 for example). You can also type "chr.joy" to figure out what joy is currently set to.
BTW: Do you have dropbox?I did not... do have it now. ***** just removed the address because of spam bots
Shift+O doesn't work for me... but enter it after the first line, gave me an idea what choice should be made.. so easy debugging.
I did not... do have it now. [email protected]
Just got home. Hope to redo the chat for today... starting on one of the empty options tommorrow.
Ar tonelico pack has been tagged "properly". It has characters with both large and small amounts of pics, so I guess it will be good for testing.
Going to get some sleep, I'll take a look at it tomorrow (kinda hoping you didn't tag everything "one girl" again :) )Nope, I use it for group only, assuming that a pic has more than 1 girl and 1 guy (otherwise it's not a group, but cumcovered, les or sex/anal). So 1 girl 2 guys = group + 1 guy.
You guys don't mind some of the "explicit" language in the text? I'm keeping it at that level. But if it bothers you, I'll make it more PG... :-X
Nope, I use it for group only, assuming that a pic has more than 1 girl and 1 guy (otherwise it's not a group, but cumcovered, les or sex/anal). So 1 girl 2 guys = group + 1 guy.
I'm tagging King of Fighters pack now, so let me know if I've made any major mistakes in Ar tonelico.
So, should I use one guy/one girl tags for "standard" sex/anal pics?
Yeap, better compatibility with other games and we have no idea if WM system is actually better than straight approach. Lets add it for bj/sex/anal just in case if it's not to much trouble.
And it turns out that I shouldn't do it after all. I really hope it's the final decision already.
label choice1_she:
if chr.joy < 50:
$ginterimg = chr.show('profilesad', resize=(987, 637))
p "How are you feeling? "
if chr.status != "slave":
g "I miss my freedom. "
g "But i promised to work, so I shall"
else:
g "I miss my family. "
g "I wish I could go home. "
elif 49 < chr.joy < 80: # Between 50 and 79
$ginterimg = chr.show('profileneutral', resize=(987, 637))
p "How are you feeling? "
if chr.status != "slave":
g "I'm doing ok."
g "Thank you for giving me this chance."
else:
g "I am fine, master."
g "Everybody is nice and i'm adjusting to living here. "
elif 79 < chr.joy < 100: #Between 80 and 99 Happy
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How are you feeling, [chr.name]? "
if chr.status != "slave":
g "I'm happy here."
if chr.occupation == "Prostitute":
g "I happily fuck and suck for the payment you give me"
if chr.occupation == "Stripper":
g "I love those eyes on me, as a slowly show them my body."
if chr.occupation == "ServiceGirl":
g "Keeping the customers happy, is a job i love"
if chr.occupation == "Warrior":
g "Lots of fightering to do. Always good"
else:
g "I'm happy here."
if chr.occupation == "Prostitute":
g "Fucking and sucking for Master, I do gladly"
if chr.occupation == "Stripper":
g "Showing off my body for Master is good."
if chr.occupation == "ServiceGirl":
g "Customers are needed by Master, so i try to keep them happy."
if chr.occupation == "Warrior":
g "Master says fight. So I fight"
else:
#Joy = 100 so do something extra, depending on libido if over 40 sex else do striptease.
if chr.libido > 40:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How are you feeling, [chr.name]?"
if chr.status != "slave":
g "I'm very happy... "
g "How about I show you how happy..."
$ginterimg = chr.show('sex', resize=(987, 637))
"[chr.name] takes of her clothes and starts working you. \nSoon she is riding you for all that's worth."
else:
g "I'm very happy, Master"
g "[chr.name] will show you how happy master."
$ginterimg = chr.show('sex', resize=(987, 637))
"[chr.name] jumps you. You both tumble around while shedding clothes.\nAfter a frenzied sex session later, you hear her purr on your chest"
g "Master is good for [chr.name]."
$chr.mod('normalsex', 1)
$chr.mod('disposition', 1)
$chr.mod('libido', 1)
else:
$ginterimg = chr.show('profilehappy', resize=(987, 637))
p "How are you feeling, [chr.name]? "
if chr.status != "slave":
g "I'm very happy... "
g "Sit back enjoy this..."
$ginterimg = chr.show('strip', resize=(987, 637))
"[chr.name] slowly does a striptease act. \nAs she takes of her last piece of clothing, you both are a bit flushed."
else:
g "I'm very happy, Master"
g "Let [chr.name] will put on a show for Master, to show how happy"
$ginterimg = chr.show('strip', resize=(987, 637))
"[chr.name] slowly does a striptease act. \nAs she takes of her last piece of clothing, you both are a bit flushed."
$chr.mod('strip', 1)
$chr.mod('libido', 1)
if dice(10):
$ginterimg = chr.show('profilehappy', resize=(987, 637))
"She was glad you were worried about her. "
$chr.mod('disposition', 1)
$chr.mod('joy', 2)
$jump('girl_interactions')
** just some things I noticed. (bugs or not)
- When trying to equip a girl something from my inventory I don't see an inventory.. but when i'm in the shop I see lots. Is that right?
- The slave market and meet girls don't reset, so if you buy/get those there aren't anymore to get.
Nope use the copy in your dir of dropbox.
easy to test. start a new game, go meet n park/town. pickup the girls.
go to the main screen and press turn.
will try the inventory screen. thx
Every 7 days.. k will try that again.
The transfer screen does not have the player.. so you can't transfer things from your inventory to the girls.
A button at the girl screen to just to transfer would indeed help, if the player was in that screen.
self.txt += "Sex goddes statue in your brothel influences the minds of your costumers to pay something extra for your girls services. /n"
self.txt += "Sex goddess statue in your brothel influences the minds of your costumers to pay something extra for your girls services. \n"
Soz. Misread that one.
Did some more testing. Saw a line in the classes - jobs.rpy that problably is a typo.
This line
Should probably be
Didn't change anything else. I just noticed it when testing till day 7.
I'll put the updated file in the dropbox folder under my nick.
focus = false
pytfall.tailor_store.inventory.filter = 'body'
chr = hero
chr.inventory.set_page_size(18)
Xela,
Got a question/suggestion for you.
I've been looking at the shopping button in the girlinteraction screen.
The way I see it, almost all the code is already in the normal shopping screen.
We could limit it to the tailor or all shop.
And make a change to the store so that the code isn't double.
That part in the pyt_screen_tailor shop, defines the hero. So if we define a global variable we check for, we would skip the chr=hero. So it stays the girl you are taking shoping.
We can use the variable to mod the girls stats after buying something too, with a description / picture as a thank you.
That part we can always conclude after the item has been bought.
Let me know what you think. If you don't like it, do you mind if I borrow that screen to build something for the girls to shop?
Main matches work in the Arena, that basically concludes the main code. From here on out it's just adding stuff and making it interesting
Minor fixes in 3 previous packs, Naruto and One Piece packs tagged.
Btw, if profile/ent picture has date tag, it doesn't mean that it can be used for a date only. It means that it can be used for a date as well as usual profile/ent.
init:
$ girlmeet_all_action_count = 0
$ compliment_cute_count = 0
$ compliment_cute_repeat_s = 0
$ compliment_cute_repeat_f = 0
$ compliment_cute_s = 0
$ compliment_cute_f = 0
$ girlmeet_dice = 0
$ girlmeet_disp_multiplicator = 1
label gm_interact_cute: #just one of the labels with only few traits
if compliment_cute_count > 1:
$ compliment_cute_repeat_f = 1
$chr.disposition -= random.randint(10, 25)
elif compliment_cute_count > 0: #check if you do same thing more then once in one session
if chr.disposition > 300:
$ girlmeet_dice = 40
elif chr.disposition > 9:
$ girlmeet_dice = 30
else:
$ girlmeet_dice = 20
if dice(girlmeet_dice):
$ compliment_cute_repeat_s = 1
$chr.disposition += random.randint(5, 15)
else:
$ compliment_cute_repeat_f = 1
$chr.disposition -= random.randint(10, 15)
else: #main part
if chr.disposition > 300:
$ girlmeet_dice = 90 #chance to succes
$ girlmeet_disp_multiplicator = 0.4 #compliment is worth less as relationship advances
elif chr.disposition > 9:
$ girlmeet_dice = 75
$ girlmeet_disp_multiplicator = 1
else:
$ girlmeet_dice = 40
$ girlmeet_disp_multiplicator = 1.2
if dice(girlmeet_dice):
$ compliment_cute_s = 1 #type of text to show
$chr.disposition += (random.randint(10, 20)*(girlmeet_disp_multiplicator))
else:
$ compliment_cute_f = 1
$chr.disposition -= (random.randint(5, 15)*(girlmeet_disp_multiplicator))
if compliment_cute_repeat_s == 1: #display of text
$ compliment_cute_repeat_s = 0
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Mhm... praised again... (impersonal RS)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Thank you again.(polite RS)"]))
else:
$chr_gm(random.choice(["So much praise...(normal RS)"]))
elif compliment_cute_repeat_f == 1:
$ compliment_cute_repeat_f = 0
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Not again. (impersonal RF)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Sir, you are repeating yourself. (polite RF)"]))
else:
$chr_gm(random.choice(["I've heard that from you already. (normal RF)"]))
elif compliment_cute_s == 1:
$ compliment_cute_s = 0
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["…ok ((impersonal S)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Thank you, I'm very pleased. (polite S)"]))
else:
$chr_gm(random.choice(["Thank you. (normal S) "]))
else:
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Bigmouth. (impersonal F)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Please, don't bother me... (polite F)"]))
else:
$chr_gm(random.choice(["I've heard it all. (normal F)"]))
$ compliment_cute_count += 1
$ girlmeet_all_action_count += 1
if girlmeet_all_action_count > 2:
jump gm_end
else:
jump girlsmeet
label gm_end: #end after three actions (need to be done differently)
$ girlmeet_all_action_count = 0
$ girlmeet_disp_multiplicator = 1
$ compliment_cute_count = 0
$narrator(random.choice(["After awhile together, it comes time to say goodbye.", "You parted ways after another short while together."]))
hide screen pyt_girlsmeet
hide screen pyt_city_parkgates
hide screen pyt_city_park
jump pyt_city
do you see any obvious errors or something that's very different from what you wanted it to be?init:
$ girlmeet_all_action_count = 0
$ compliment_cute_count = 0
$ compliment_cute_repeat_s = False # Use booleans where appropriate.
$ compliment_cute_repeat_f = False
$ compliment_cute_s = False
$ compliment_cute_f = False
$ girlmeet_dice = 0
$ girlmeet_disp_multiplicator = 1
label gm_interact_cute: #just one of the labels with only few traits
if compliment_cute_count > 1:
$ compliment_cute_repeat_f = True
$chr.disposition -= random.randint(10, 25)
elif compliment_cute_count: # You don't need > 0 here, == 1 would work as well. #check if you do same thing more then once in one session
if chr.disposition > 300:
$ girlmeet_dice = 40
elif chr.disposition > 9:
$ girlmeet_dice = 30
else:
$ girlmeet_dice = 20
if dice(girlmeet_dice):
$ compliment_cute_repeat_s = True
$chr.disposition += random.randint(5, 15)
else:
$ compliment_cute_repeat_f = True
$chr.disposition -= random.randint(10, 15)
else: #main part
if chr.disposition > 300:
$ girlmeet_dice = 90 #chance to succes
$ girlmeet_disp_multiplicator = 0.4 #compliment is worth less as relationship advances
elif chr.disposition > 9:
$ girlmeet_dice = 75
$ girlmeet_disp_multiplicator = 1
else:
$ girlmeet_dice = 40
$ girlmeet_disp_multiplicator = 1.2
if dice(girlmeet_dice):
$ compliment_cute_s = True #type of text to show
$chr.disposition += (random.randint(10, 20)*(girlmeet_disp_multiplicator))
else:
$ compliment_cute_f = True
$chr.disposition -= (random.randint(5, 15)*(girlmeet_disp_multiplicator))
if compliment_cute_repeat_s: # No need for == 1 #display of text
$ compliment_cute_repeat_s = False # I am thinking bools should be reset in the gm_end label.
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Mhm... praised again... (impersonal RS)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Thank you again.(polite RS)"]))
else:
$chr_gm(random.choice(["So much praise...(normal RS)"]))
elif compliment_cute_repeat_f:
$ compliment_cute_repeat_f = False
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Not again. (impersonal RF)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Sir, you are repeating yourself. (polite RF)"]))
else:
$chr_gm(random.choice(["I've heard that from you already. (normal RF)"]))
elif compliment_cute_s:
$ compliment_cute_s = False
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["…ok ((impersonal S)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Thank you, I'm very pleased. (polite S)"]))
else:
$chr_gm(random.choice(["Thank you. (normal S) "]))
else:
if "Impersonal" in chr.traits:
$chr_gm(random.choice(["Bigmouth. (impersonal F)"]))
elif "Well-mannered" in chr.traits:
$chr_gm(random.choice(["Please, don't bother me... (polite F)"]))
else:
$chr_gm(random.choice(["I've heard it all. (normal F)"]))
$ compliment_cute_count += 1
$ girlmeet_all_action_count += 1
if girlmeet_all_action_count > 2:
jump gm_end
else:
jump girlsmeet
label gm_end: #end after three actions (need to be done differently)
$ girlmeet_all_action_count = 0
$ girlmeet_disp_multiplicator = 1
$ compliment_cute_count = 0
$narrator(random.choice(["After awhile together, it comes time to say goodbye.", "You parted ways after another short while together."]))
hide screen pyt_girlsmeet
hide screen pyt_city_parkgates
hide screen pyt_city_park
jump pyt_city
Ok, thank you. I'll gladly wait for anything (as I still have a lot to prepare anyway).
One thing that you probably could make even now is a survival mode of some kind, where you fight (with monsters?) as long as you can nonstop (without belt items, maybe). The more battles you win, the more money/fame/whatever you will get. Every 10 (20? 50?) rounds you can exit and take your reward. If your party was defeated, then no reward.
@Xela:
[/size]I still have those welcome lines I mentioned earlier ("...Do you want something? ", "Hey, how's it going? ", "Ah, Hello~ ♪ ", "You're in my way. Get lost. " etc...) that I could sort by disposition/traits too. Just don't know where to not mess the screen.
label girlsmeet:
$renpy.scene()
$renpy.show(pytfall.gm.bg_cache)
hide screen pyt_city_parkgates
hide screen pyt_city_park
hide screen pyt_main_street
python:
chr_gm = Character(chr.name, color="#c8ffc8")
player_gm = Character(hero.name, color="#c8ffc8")
nvl_gm = Character(None, kind=nvl)
renpy.show_screen('pyt_girlsmeet')
renpy.with_statement(dissolve)
# ----------------------> Split here.
chr_gm "Hello!" # <--- Greetings go here... use it as you would any other label.
# ----------------------> Split here.
python:
while true:
result = ui.interact()
if result[0] == 'act':
pytfall.gm.jump('gm_interact_%s'%result[1])
if result[0] == 'menu':
if result[1] == 'back':
pytfall.gm.return_to_menu()
else:
setattr(pytfall.gm, 'show_gm_menu', false)
setattr(pytfall.gm, 'show_gm_menu_' + result[1], true)
if result[0] == 'control':
if result[1] == 'back':
renpy.scene()
renpy.hide_screen('pyt_girlsmeet')
jump(pytfall.gm.label_cache)
if result[1] == 'return':
break
hide screen pyt_girlsmeet
hide screen pyt_city_parkgates
hide screen pyt_city_park
jump pyt_city
Queen's Blade pack tagged.
Btw, Cherry, if you don't have much time, I could tag your packs after I'll finish with mine.Thanks, but no. My packs are not ready for tagging now, they all need updates and I still hope I will be able to do it.
After that I'll probably create some monsters if the system will be ready, although I have no idea how to balance out their stats. Maybe it mostly should be up to the game depending on monster's level and type (like in many games), while via json you could add more specific things like skills, spells and resistances.
I wonder if we should allow to see mobs stats freely during the battle. Or do we need a bestiary encyclopedia, like in some games.
I guess we could add a passive skill or a spell to read enemy stats eventually, but that's for another BE.
I am thinking about (maybe) adding quests to preAlpha, to make PyTFall seem more like a game, not just a bunch of code... Like get 3 new girls in 15 days or win 5 dogfights or get some strange in the city or level up any girl 5 levels in 30 days and so on...I guess you could, however I've never understood WM type of quests. I mean, you just receive some money from nothing and nobody by doing random stuff.
I guess you could, however I've never understood WM type of quests. I mean, you just receive some money from nothing and nobody by doing random stuff.
In Agarest there is the same situation with side quests, but there is adventurers guild with an npc clerk as well, which somewhat explains all these random quests and rewards.
Maybe we need a guild as well even for alpha, at least cosmetic one for a start.
And what is the jokers in Pytfall? I mean, I know what they do in simbro, but what are they in our project? Artifacts or something?
Perhaps jokers could be related to religion. With different gods and tasks, like goddes of love for tasks like recruit girls or rise their disposition; arena quests for god of war of something; etc.
[
{
"name": "Mitsuru's Supremes",
"members": ["Mitsuru_Kirijo", "random_girl", "random_girl"],
"lineups": 2
},
{
"name": "Randalf's Vendetta",
"members": ["Randalf", "Z", "Z"],
"lineups": 3
},
{
"name": "We got HUGE knockers!",
"members": ["Tsunade", "Mei_Terumi", "Samui"],
"lineups": 5
}
]
Huge knockers, lol :D
Touhou1 and Xenosaga tagged. Random packs left.
I suppose we need a separate formation file for each pack. So it's probably should be in the same place as girls xml/json files. I guess it called formation.json or something?
What's a formation file?
{I believe it's pack makers who should create teams for their characters if they want to. And since we already have more than one pack maker, we cannot use one general file for it.
"name": "Mitsuru's Supremes",
"members": ["Mitsuru_Kirijo", "random_girl", "random_girl"],
"lineups": 2
},
I believe it's pack makers who should create teams for their characters if they want to. And since we already have more than one pack maker, we cannot use one general file for it.
That will be somewhat difficult for third-party pack makers to add their teams to the game. Players will have to manually add required strings to arena json. Not too user-friendly.
It's like have a general data.xml for all unique girls.
Maybe not multiple files, but something should be done about it eventually.
Win 2k, win xp, slime random packs tagged.
Not sure about the left screenshot. If you have 200+ girls, including random ones, you cannot remember them all by names. I think small portraits or something like that will be useful. Or maybe surnames.
Dark, Ranger, Noble, Maid elves and Dryad packs tagged.
I dislike the way how maximums of stats shown. It's more or less admissible with dynamic values like hp, mana or fatigue, but things like "charisma 30/100" are kinda confusing, if not too straightforward.
If you remember, I showed Kamidori stats screen once as example.
Rena, Leafa, Priest, Soldier, Sage, Adventurer random packs tagged. It means that all my existing packs are finally ready :)
Another example of metadata in one picture.
It means that all my existing packs are finally ready :)
You could use sprites for MC that I have in db, MC folder. Not sure if we need several main characters for alpha though, but sprite instead of portrait is bad even for alpha.
Many of the random packs are missing...I have no idea what do you mean by that. They all are available for download.
Backgrounds are removed poorly in those, they look really off in the game.Ok. Deleted.
King of fighters doesn't have .xml file.Yup, I remember.
You've also enabled autotagging option in the software and there are now dozens of useless tags in the game, I am surprised you didn't notice that in the gallery, that's what I made it forCharming. That's why I asked if I have any mistakes in tags after I finished with Ar tonelico, and guess what, you said I haven't.
I have no idea what do you mean by that. They all are available for download.
Charming. That's why I asked if I have any mistakes in tags after I finished with Ar tonelico, and guess what, you said I haven't.
I went over them quite tautomatic tags are added during JSON formation. They are not hurting anyone, just making gallery look really stupid.Ah, I see. Well, we'll need more tags in the future anyway (for slave training, for example), I'll fix it then.
I just tried all links for random packs, they work for me. Are you sure your links.txt is not outdated, since it says "no longer available"? Maybe you need to run dropbox to synchronize it?
About jobs, I believe we don't have a decent job for warriors yet. I mean, you need them for exploring (not ready), arena (with the current BE you need only 2 warriors anyway) and security (don't bring any profit). Do you have any ideas about it?
Nah, let's do it for beta then.
Another thing is casino. IIRC, there is one in wm, it based on girl's intelligence and rng. So from time to time you either get or lose considerable amount of money.
This system is also open to abuse with save/load scamming to gain start-up capital, but way too inconvenient and even dangerous for constant use, because you could be a bankrupt for 2-3 turns until endgame, when you have more money than you need.
So if you will ever decide to add such a job, it should be done from scratch (and I have no idea how exactly yet :) ).
Will do. Got most of the logic in my head figured out... now need to translate it into something that works on occupation and disposition.
Example:
Buy lingerie for a warrior girl when disposition is low... she doens't really like it and disposition lowers.
But buy the lingerie when the dispostion > 50 she is ok with it. No penalty
And > 80 she loves it. +2 or something.
With the prostitue class it much higher with levels like above...
that was my idea at least.
k will check it in the char stats... but first the look a feel so we can check it. after that is just logic in code.. that's the easy part.
ps. Is it my copy or is the last version on the dropbox not able to go to the next day?
Xela, do we have a ready system for creating mobs?
One of the great things about the original WM game was how easy it was to add new girls. Grab some appropriate pictures, modify an xml file a little, and you were ready to go. Easy enough even for me to do! I'm told the same was true of items as well, although I never tried it.
But with the significantly expanded scope of this project, what will be required to add a new girl/item/stuff?
If this was a democracy, I'd vote for option 2. There's a lot of content already out there, and it'd be nice to have it reasonably accessible. Option 4 is tempting, but it sounds like it'd be too much for those of us who can't program.
What about using some default settings for characters who don't have a suitable picture for any particular category? The supplied picture(s) would override that, but if there's nothing in the pack for that field then it pulls out something generic but suitable.
Thx for the fix. Saw an old spelling error in sevices and the /n instead of the \n in some places... replaced those and added a \n to all \n in the end of the line. It makes next day a lot more readable.
I put the changed jobs in my dropbox folder, if you want to use it.
* EDIT *
I forgot to ask.. what can healers do? There isn't a job they want to do I think.
Came across a bug in the tailor shop filter function.
When I call it from the girl_interactions with pytfall.tailor_store.inventory.filter = 'body', the top of the shop inventory shows body.. only the inventory still contains everything.
I didn't even notice till now. Will look at it later.. but just thought to mention it, incase somebody else notices it.
Thanks. Works like a charm. Set the girl inventory to body to... so you can see what you sell\buy.
The girl value you are talking about is .badness I think?
But i want to try and add different options for occupation & disposition, so i'll have to filter occupation, and the item stats for added disposition and maybe some joy. If disposition is high enough maybe trigger something.
I was playing around with how i want to responde to trigger.. that is done... now it's making the if's.
Do we still need exp in the mobs json? I believe we don't.
Btw, I'm going to use "portrait" field for mobs as well. Make sure it at least won't crash the game :)
There is some turbulence in rl on my side right nowSame here, I have a new job, so things a bit unsettled right now. But it's still that kind of job where I will be able to spend at least a couple of hours per day on the project.
Ok, it's on DB.
But there's not much useful. It really turned out that I don't have any talent for this. :(
After spending some time with it, I think that making girlmeets in simple simbro1x style wasn't the best bet. It doesn't look visually appealing when using standard renpy VN textbox and as from gameplay standpoint, it's not much interesting either (adding more texts doesn't help). But I'm still not really sure how to do it differently...
I've made first 50 mobs, you can find json in my db\mobs folder, and all sprites for them in my db\mobs\mobs folder.
Hey guys,
I'm busy with build the responses to the shop and I have this weird error when I try to reload the game from somewhere in the game. Same if I try to load a game from the menu...
If I start a new game and then load.. I don't have the issue... can't figure it out. Am I missing something?
The error is in the screenshot folder of my Dropbox folder and says something about the StoreModule has no attibute rights to create_arena_girls.
If you could take a look, it would save a lot of time if I can just reload a change... instead of quiting to the menu... reloading, starting a new game again ect.
we may end up with another tag system close to the release.Any serious problems with the current system? I know I've not updated the tagger in a while, but I've been quite busy with Pytherworld and the problems you brought to my attention were no showstoppers as far as I could tell.
Btw, an option to delete any unknown tags, either automatically during tagging for the current picture or for the whole folder by pressing a button, will be very useful for retagging.If you want to get rid of all unknown tags, IMHO the best option is to write a very simple script that uses the functions in the tags package to delete all unknown tags from all images in a directory tree. That's how I've done it in the past. It's also a good option for retagging. All 1:1 and n:1 changes can be done automatically because it is clear which tag should be replaced by which. Only changes were one tag should be replaced by several tags and new tags that should be added require manual retagging.
I'm still hoping for that delete current image button.I'll see what I can do. As I said earlier, the problem is not the feature itself, which can be written very quickly, but packaging and uploading the application. I have ideas that can greatly accelerate this process, but they take time to implement too. I'll try to fit this in sometime soon.
Don't try to understand what Russians do...That pretty much sums it up. :D Thanks for the third party opinion on this.
NB: to think of tags. I had idea, will it be interesting to set tags depending on which directory it is? Example: we have root directory that contains all of images, and they placed in folders that named as tags, like root/girl_name/waitress/offended_by_visitor or root/girl_name/sex/bj. It can make setting tags to groups of images and adding new images much faster. Of course, it just an idea.This is the way I used (and probably everyone else) when creating old filename based packs, to sort them in different folders first and then rename. And it took quite a while to make all those folders and sort downloaded images in. I don't really miss that now, when we can just tag everything like it is within one folder, one by one. I admit that it can get a little confusing when removing/adding images, but Xela made a gallery for sorting images by tags, that can be used to look for mistagged ones.
@Xela: You mentioned adding some NPCs. If you are not too busy, may I ask you more about what you had in mind?
Xela, do you have sufficient free time to continue the project? Or, rather, will you have it in the future?
How are you doing on writers? Looking for story line writing?
With that you like if a certain tag, a certain sentence is used?
Example.
Tag Big Breasts.
Description. Her big breasts keep the customers of the bar almost hypnotised while they drink.
That sort of thing?
if self.girl.has_image("sex", "ontop") and dice(50):
self.txt += "He invited her to 'sit' on his lap as he unsheathed his cock. They've continued in what along the same lines in 'girl ontop' position. \n"
self.img = self.girl.show("sex", "ontop", resize=(500, 600))
elif self.girl.has_image("sex", "doggy") and dice(50):
self.txt = "".join([self.txt, "He ordered %s to bend over and took her from behind. \n"%self.girl.nickname])
self.img = self.girl.show("sex", "doggy", resize=(500, 600))
else:
self.txt += random.choice(['He wanted some oldfashioned straight fucking. \n',
'He was in a mood for some pussy pounding. \n',
'He asked for some playtime with her vagina.\n'])
self.img = "sex"
if self.girl.has_image("sex", "ontop") and dice(50):
self.txt += "He invited her to 'sit' on his lap as he unsheathed his cock. As soon as he sheated the girl, they started their dance. Thrusting up and down she ran them to both their satisfaction. \n"
self.img = self.girl.show("sex", "ontop", resize=(500, 600))
elif self.girl.has_image("sex", "doggy") and dice(50):
self.txt = "".join([self.txt, "Bend over %s, he ordered!\n As she complied he immediately thrust hard into her. Soon after a hard thurst they came together.\n"%self.girl.nickname])
self.img = self.girl.show("sex", "doggy", resize=(500, 600))
elif self.girl.has_image("group"):
self.txt = "".join([self.txt, "The group surrounded %s and started stripping her, while playing with her body.\n As soon as she was naked the first entered %s, the others joined.\n"%self.girl.nickname])
self.txt = "".join([self.txt, "%s has sucked, fucked and riding them all to exhaustion.\n"%self.girl.nickname])
else:
self.txt += random.choice(['He wanted some oldfashioned straight fucking. \n',
'He was in a mood for some pussy pounding. \n',
'He asked for some playtime with her vagina.\n'])
Is group a different category of sex or just a tag?
Like this setup?
-- > Health/Fatigue checks.
-- > Slave/Free/Occupation checks.
-- > Client preference vs girl traits checks.
-- > General sex category (4 main cats I mentioned in previous post, group hasn't been added yet but it'll be the fifth).
-- > Sub sex/location/event/mood/expression categories.
-- > Stat check (relevant to the main category, we do not have substats yet).
-- > Rewards/Penalties over the whole interaction.
btw Best wishes for the New Year all (still not used to it)
Question though? So I know what part to write.
This is replacing the the part which is in the customer script right? Else you would get double text and the customer text not matching the pic.
If so the testing for her skill and charisma must be included too.
Cheers,
Xip
# Straight Sex Act
if self.client.act == 'sex':
self.txt += random.choice(['He wanted some oldfashioned straight fucking. \n',
'He was in a mood for some pussy pounding. \n',
'He asked for some playtime with her vagina.\n'])
# Virgin trait check:
if "Virgin" in self.girl.traits:
self.txt = "".join([self.txt, "\n{color=[pink]}%s lost her virginity!{/color} \n\n"%self.girl.nickname])
self.girl.removetrait(traits["Virgin"])
Just wandered in and thought I'd barge into the conversation and demand answers to questions you have no interest in answering.
Do you have a world design? So far i've seen a picture of a town and i know that there is an arena and that whoring is at least tolerated but no information about the rest of the world. Is this a lawless land where the strong dominate the weak? Or is it an independent kingdom with an inexplicably high ratio of female citizens whose main export is therefore slavegirls? Perhaps your player has for somehow bribed or blackmailed a local official to look the other way rather than raid his whorehouse? Perhaps you have not given any thought to this at all as you're busy coding? if that last were the case I could do some world design if it would help. If there IS some repository of background information perhaps you could direct me to it.
Also do you have any plans for explorable dungeons? do you have a random dungeon generator yet? there is a set of charts for generating random dungeons in the 1st ed. D&D DM guide that is pretty extensive. It might not be to hard to convert that into code for a dungeon generator.
And gods, what kind of gods do you want? a deistic style creator would mean that after god created the land he simply lets it run and no longer interferes with what happens. or perhaps you prefer a polytheistic system with different gods claiming different realms of influence. the competition among gods might mean that in some places slavery is illegal and therefore any slave that gets to that place is now free.A god that no longer interferes would be contrary to the possibility of the resurrection of characters in the temple that will be added to the game in the future. Of course, you can change the concept and resurrect with the help of scientific achievements solely, but that would require much more advanced world, with spaceships and stuff.
As for the slavegirls source, Xela refused once to substantiate it by standard simple explanation (space distortion, yeah), somehow he prefers to not have an explanations at all :)
pretty much all i do is study and think about world designs. I'd be glad to work on this if you like. First you gotta start with the big things then you work your way towards the small stuff.
For instance the shape of the world and governments. The shape of the world will affect how things are governed. So far I've assumed a standard spheroid world with a standard government. I think there are nobles mentioned as a type of customer and that implies that we are currently working inside some sort of feudalistic monarchy. the shape of the world means that a slave that escapes may very well be able to simply run far enough cross a border and be gone forever in game terms.
But lets say we want something more interesting, like a world shaped like a group of associated spheroids inside a bubble of breathable gasses in a low gravity environment. each spheroid probably has its own government lets say that the one you are on rather than a feudalistic monarchy is an oligarchy nobility therefore is merely a recognition that a person has sufficient wealth to be considered an oligarch and therefore have a vote in the senate. Travel between spheroids is limited to those who can obtain passage on a flying ship. Slaves that are shipped from one spheroid to another therefore have little chance of returning to their homes therefore are always recoverable in game terms.
And gods, what kind of gods do you want? a deistic style creator would mean that after god created the land he simply lets it run and no longer interferes with what happens. or perhaps you prefer a polytheistic system with different gods claiming different realms of influence. the competition among gods might mean that in some places slavery is illegal and therefore any slave that gets to that place is now free.
any of this looking interesting to you?
A god that no longer interferes would be contrary to the possibility of the resurrection of characters in the temple that will be added to the game in the future. Of course, you can change the concept and resurrect with the help of scientific achievements solely, but that would require much more advanced world, with spaceships and stuff.not if you went with a steampunk/frankenstien style resurrection, which consists of strapping a not too rotten or damaged corpse to the slab during a storm and shooting lightning into it. Or a reanimator style resurrection, pump the corpse full of drugs but don't wait too long or it will be evil.
- standard spheroid worldgood old Not Earth it is i guess
- standard government
- feudalistic monarchy
All sound good to me. Maybe a republic along the lines of Roman Empire before Julius? I don't care either way.
I like the Oblivion deity design. We could go with something along those lines, only more limited.wow gonna hafta be WAY more specific on that.
It's all interesting, but world concept should be mindful of the fact that this is a game and a sim. Deep design of the world might not really be necessary or may even turn out to be restrictive to game design.
Maybe we should first agree on the format:
1) Long introduction style.
2) Books like in Elder Scroll games.
3) Talking to NPCs and advancing through the game.
Mixture or something different might also work but the main issue is that we need to be mindful of the amount of texts/events/NPC required and time we'll need to make it all work. Since it's a game and not a book, we're limited as far as the depth goes by Graphics, sounds, backgrounds, NPCs that we can find online...
Well, I didn't want to create to many delimiting factors before the world is created as a concept... I thought I've made that clear.Nah, you said you don't care about such explanations at all :)
Or a reanimator style resurrection, pump the corpse full of drugs but don't wait too long or it will be evil.Ouch, now that's a scary story. I watched Reanimator, it does not restore the body, and the revived ones are always evil and kinda immortal, iirc ???
good old Not Earth it is i guess
i dunno much about the old roman way of doing things to be honest, wasnt there a lot of family stuff going on as well as competition for wealth? maybe your dude it trying to break into the nobility despite not being from a "noble" family?
wow gonna hafta be WAY more specific on that.
a good world background allows easy creation of quests and makes coherent npc talk easier, but you are right in as much as the background needs to reflect the mechanics and not restrict them. The elder scrolls game really did do a good job explaining the history of the world in unobtrusive ways, emulating them is not a bad choice.
- standard spheroid worldWell, WM plot is about endless multidimensional catacombs under the city that lead to other worlds. We might as well assume that those catacombs are not just under the city, but "under" the whole world.
- standard government
- feudalistic monarchy
hrrmm endless transdimensional catacombs huh? one of my favorite explanations for those goes like this, you've got this priest who worships a dead god, one who was defeated and cast out by the other gods, and he wants to preform a resurrection on his god. ordinarily this would be impossible but this priest has a reliquary that contains a actual physical part of the dead god. so he does the resurrection and it doesn't work all it does is pull a fragment of the dead gods realm into his own. this so upsets the fabric of space and time that it causes the relevant catacombs,
On the other hand, we will have cloning technology in the game, so reviving could be somehow based on it as well.
I thought we wanted to go with magic (religious/spiritual) approach, not tech?Doesn't matter. We will have clones one way or another, even if created by magic only. So resurrection could be based on this concept if we won't have an advanced religion with resurrectig spells.
one of my favorite explanations for those goes like this, you've got this priest who worships a dead god, one who was defeated and cast out by the other gods, and he wants to preform a resurrection on his god.Reminds me of NWN2 MoB :)
not every explanation needs to be visible to the player but HAVING an explanation, even a vague one, in mind from the beginning makes it easier to craft coherent events relating to the anomaly.
Maybe you dont actually need an explanation but a good idea of the capabilities of the anomaly might work just as well. a comprehensive list of what can and cant happen would obviate the need for an explanation of why or how it happens if you wanted to leave that as a mystery.
(see i can be flexible)
Finished with attack on titan, making tekken pack now.
I think you forgot to code a couple of effects for traits. I reminded you about it at some point, and you forgot again. Now even I don't remember which effects weren't coded :)
Oki, just pushed a decent update to SF. If somebody wants to replace/improve my texts (that shouldn't be to hard) or add more options or even addons (like moods or locations based on stats and locations), be my guest, I'll prolly leave acts like this for the Alpha.Looks good so far.
Looks good so far.
But I have some group and rapeish pics appearing when using my girls. Would it be possible remove pics tagged "group" and "bdsm" from showing in whore job?
man, signing up for classes is proving harder than expected. this bodes ill for the future
But now there are pictures from different girls appearing a lot in next day report :(
When and where?
From starting girls, it's happening a lot for Alice Margatroid, on her report (she has been working for you for 1 day...). Then it's happening for girls that switch to auto rest (and those manually set to rest). For example, instead of Kurenai resting, I get a text "She spend the day relaxing" with picture of Chie, who is not even recruited.
I don't think so, but I'm not experienced enough to think about what it actually mean for coding.
Iirc, in D&D if you managed to drop any of your stats to 0 (and that's not simple at all), you will die. We might use the same system eventually.
Or maybe throw up some major negative effect instead. Maybe a separate effect for each stat, like atrophy for constitution.
Hi. Want to help with this game, but im didnt know Pyton, so i need to ask, is it easy to get in (i have some knoweledge in specific prog. lang.) and if it is, what i need to download exept Renpy to change code and test it?
And would be nice to see some "todo least" to get something to work on, that noone else do in (at least) this month.
So if someone can explain it to me, i can do something to help this game in my free time. :)
So, for example, if i see some action(button) without result in game - that mean its need to be done?
Then i try to do something. :)
So, for example, if i see some action(button) without result in game - that mean its need to be done?I guess we DO have the TODO list after all, so you could take a look at it if you want to :)
I guess we DO have the TODO list after all, so you could take a look at it if you want to :)Where? Show me plz. ::)
oh, that's girlmeets, "interaction" we call the part you can find under girl profile/interact (just to avoid confusion)
btw, girlmeets need more work then just filling holes and recruitment (in TODO list), because I did almost nothing on them codewise.
- they don't use AP so one meeting never ends
- girls those are there at the start of the game are never replaced with new ones
- there is no screen to give gifts
- they doesn't use tags yet
and I don't believe I can do it (I don't understand the code that much yet)
------------
Can I continue tagging girlpacks, or we will make some changes in tags before alpha?
Where? Show me plz. ::)
"I don't recall that we have any of that but see what you can find"
About that... i followed instruction to download game profect, got all installed - and in interractions with girls (in park for example) i push buttons with actions and some of them just give neggative answer (looks for me like some textplacer) or give some error (line on top of screen) sayin something like "there no event for this button" (tested on weekend so can tell more acuratly).
P.S. forgive me my eanglish ;) i dont know it well.
I've been poking around in your 'classes - jobs.rpy' file and doing some spelling/grammar nazi'ing. I didn't like seeing 'Slave is a slave so' so I fiddled with a wee bit of basic code too.(just added (self.girl.name).
I'm also wondering if you plan for 'customer' and 'client' to get names generated for them? Unique clients? Regular customers? All randomly generated? Database of fantasy names hiding somewhere?
If they aren't going to be given names I will continue doing grammar changes to those instances.
Is this file current for the version you work with? If not I could edit everything and note down the line that I changed and send that to you. Many cases of 'performace' , 'definetly' 'costumer' to be changed... luckily there is CTRL f/r.
Using Notepad++, can I save it as .txt file and rename to .rpy?
I'm also wondering if you plan for 'customer' and 'client' to get names generated for them? Unique clients? Regular customers? All randomly generated? Database of fantasy names hiding somewhere?
Is this file current for the version you work with?
Yea okay, I'm not sure how much I'll contribute but I'll try not to break everything. Sent you(I assume) a msg on sf.
terrible service girl...
Our 'classes- jobs' files were too different for mercurials auto merge to work with, well, for me anyway. So I scrapped my old file and done some quick spelling error fixes and attempted to merge...
Did I break everything?
Also I seem to be getting minus gold in tips from my terrible service girls and strippers.
eg - 'Moeblob earned -33 gold in tips, you take it all. '
also ' she expects to be compensated for her services( -35 gold). You've payed her more than that (0 gold)!
And dev note>>> i missed something <<< charisma = 5, strip = -5
might as well throw in the error report here too - trying to clean my pigstall of a brothel, clean all brothels clicked.
While running game code:
File "game/library/screens/pyt - screens - brothelmanagement.rpy", line 18, in script
File "game/library/screens/pyt - screens - brothelmanagement.rpy", line 116, in python
NameError: name 'self' is not defined
and - label clean does not exist. Then you get stuck on a blank wood background screen with nothing to click.
Can I use some established characters as NPCs in PytFall? Under their true names and making references to the original works they come from?
(for example, supplement our Tailor shop with Tailor from Enbizaka (The Evillious Chronicles) or using Hououin Kyouma (Steins;Gate) as mad scientist...)
Or would you rather have only original characters?
Went through and fixed all the typos that I could find in classes- jobs and some in classes- characters. Uploaded to sf.
Should be done with that sort of thing for a while.
*prays for no errors*
BTW: Do we have Hinata, Sakura and TenTen tagged somewhere? I still only have the old filename based version?I updated these girls you wanted, link is in my DB folder. All main tags in my other packs should also be corrected.
I updated these girls you wanted, link is in my DB folder. All main tags in my other packs should also be corrected.
Categories that we don't use yet (group, date, nude, swimsuits, ent, exercise...) are still a mess though.
What I must write in game console to set the "chr" to be the girl I want? Like, how to get commands like chr.disposition or hero.add_girl(chr) to target Sakura?
chr = char["Sakura"]
I updated these girls you wanted
I don't think it's a good idea to show events from city screen like that. I would prefer to have common gameplay tasks like shopping undisturbed, unless it's a part of a story. Also events can happen one after another now (you meet a beggar and immediately a bandit).
Also, I t would be good to run events from separate files (co they could be distributed with girl pack), it is possible?
I don't think it's a good idea to show events from city screen like that. I would prefer to have common gameplay tasks like shopping undisturbed, unless it's a part of a story. Also events can happen one after another now (you meet a beggar and immediately a bandit).
I actually love spontaneous events like that, they add a lot to the game if coded to be non-repetitive and not to frequent. Two events in sequence is a bug, we'll get rid of that. As for undisturbed, we could add an item that would allow teleportation to shops?
messenger (pigeons?). =)
I say it option 1. To make it good, in my opinion, it will consume week`s of development (if not more). But feature must be implemented in future, no doubts!
They are my view of code standard for some types of events.
They are my view of code standard for some types of events.
renpy.show(tag, what=self._sprite, at_list=[fighter.Position.Transform, offset], layer=l, zorder=fighter.Position.Z + 0.001)
to:renpy.show(tag, what=self._sprite, at_list=[target[0].Position.Transform, offset], layer=l, zorder=target[0].Position.Z + 0.001)
mf = MoveFunction(fighter.Position.Transform.xpos, fighter.Position.Transform.ypos, step.Transform.xpos, step.Transform.ypos, period=self._period)
fighter.Position = step
fighter.Show(transforms=[Transform(function=mf)], zorder=z)
mf = MoveFunction(fighter.Position.Transform.xpos, fighter.Position.Transform.ypos, target[0].Position.Transform.xpos, target[0].Position.Transform.ypos, period=1)
renpy.show(tag, what=self._sprite2, at_list=[Transform(function=mf)], layer=l, zorder=fighter.Position.Z + 0.001)
So after I improve graphics a little bit, I will have my first channeling+missile+impact skill ;)
HURRAY! It works!Code: [Select]mf = MoveFunction(fighter.Position.Transform.xpos, fighter.Position.Transform.ypos, target[0].Position.Transform.xpos, target[0].Position.Transform.ypos, period=1)
So after I improve graphics a little bit, I will have my first channeling+missile+impact skill ;)
renpy.show(tag, what=self._sprite2, at_list=[Transform(function=mf)], layer=l, zorder=fighter.Position.Z + 0.001)
class MagicFighterAttackSkill(Skill):
def __init__(self, name="Magic Fighter Attack", command=None, attributes=['magic'], damage=1, cost=1, range=5, sprite=None, pause=0, sfx=None, endTurn=True, hotkey=None, weight=0, special=False):
self._damage = damage
self._cost = cost
self._targets = TargetData.TargetFightersLos(range=range)
self._sprite = sprite
self._pause = pause
self._sfx = sfx
self._endTurn = endTurn
self._attributes = attributes
self._special = special
if command == None:
command = [("Magic", 5), (name, 0)]
super(MagicFighterAttackSkill, self).__init__(name=name, command=command, hotkey=hotkey, weight=weight)
def SetUpFighter(self, fighter):
fighter.RegisterStat("Magic", 10)
fighter.RegisterStat("MP", 10)
def PerformAction(self, fighter, target):
if (self.IsAvailable(fighter)):
if (target != None):
fighter.Stats.MP = fighter.Stats.MP - self._cost
if self._sfx != None:
renpy.music.play(self._sfx, channel="sound", loop=False)
face = fighter._battle.GetFacing(fighter.Position, target[0].Position)
fighter._battle.ChangeFighterState(fighter, "magic", facing=face)
# Make sure that the camera centres on the target before the spell goes off
fighter._battle.PointOfInterest(fighter=target[0])
if self._sprite != None and self._pause > 0:
offset = Transform(xanchor=self._sprite.Anchor[0], yanchor=self._sprite.Anchor[1])
tag = "MagicFighterAttackSkill_"+target[0].Tag+"_"+str(renpy.random.random()*1000)
l = fighter._battle.GetLayer('Fighters')
if not self._special:
renpy.show(tag, what=self._sprite, at_list=[target[0].Position.Transform, offset], layer=l, zorder=target[0].Position.Z + 0.001)
if self._special == "snipe":
renpy.show(tag, what=self._sprite, at_list=[Move((fighter.Position.Transform.xpos, fighter.Position.Transform.ypos, fighter.Position.Transform.xanchor, fighter.Position.Transform.yanchor),
(target[0].Position.Transform.xpos, target[0].Position.Transform.ypos, target[0].Position.Transform.yanchor, target[0].Position.Transform.yanchor), 0.5)],
layer=l, zorder=target[0].Position.Z + 0.001)
if (_preferences.battle_skip_combat == False):
_battle.Pause(self._pause)
renpy.hide(tag, layer=l)
fighter._battle.Attack(fighter, fighter.Stats.Magic * self._damage, self._attributes, target[0], target[1])
fighter._battle.ChangeFighterState(fighter, "default", facing=face)
if (self._endTurn):
fighter.EndTurn()
def IsAvailable(self, fighter):
if fighter.Stats.MP < self._cost:
return False
targets = fighter._battle.GetTargetFighters(fighter, self._targets, skill=self)
if len(targets) > 0:
return True
else:
return False
Library.Skills.Fire2 = MagicFighterAttackSkill("Fire 2", attributes=['magic', 'fire'], damage=10, cost=8, range=4, sprite=BattleSprite('fire 2', anchor=(0.5, 0.8)), pause=0.8, sfx="content/sfx/sound/be/fire2.wav", special="snipe")
I'm totally owned by work this week, did I miss something? We are already making skills for BE without a new BE? ???
Yeah, but don't we need, for example, elements for a start for both skills and items?
Then please create a thread for BE discussion. I guess it's about time.
image Flame SniperS:
Image("content/chars/Sailor_mars_test/Mars/combat (10).jpg")
pause 0.6
Library.Skills.FlameSniper = MagicFighterAttackSkill2("Flame Sniper", attributes=['magic', 'fire'], damage=5, cost=5, range=4, sprite_cast=BattleSprite('Flame Sniper1',anchor=(0.5, 0.),sprite_fly=BattleSprite('Flame Sniper2',anchor=(0.5, 0.),sprite_impact=BattleSprite('Flame Sniper3',anchor=(0.5, 0.),sprite_special=("Flame SniperS"), pause=1, sfx="content/sfx/sound/be/fire.wav")
And this in engine-skills.rpy class MagicFighterAttackSkill2(Skill):
def __init__(self, name="Magic Fighter Attack2", command=None, attributes=['magic'], damage=1, cost=1, range=5, sprite_cast=None, sprite_fly=None, sprite_impact=None, sprite_special=None, pause=0, sfx=None, endTurn=True, hotkey=None, weight=0):
self._damage = damage
self._cost = cost
self._targets = TargetData.TargetFightersLos(range=range)
self._sprite_cast = sprite_cast
self._sprite_fly = sprite_fly
self._sprite_impact = sprite_impact
self._sprite_special = sprite_special
self._pause = pause
self._sfx = sfx
self._endTurn = endTurn
self._attributes = attributes
if command == None:
command = [("Magic", 5), (name, 0)]
super(MagicFighterAttackSkill2, self).__init__(name=name, command=command, hotkey=hotkey, weight=weight)
def SetUpFighter(self, fighter):
fighter.RegisterStat("Magic", 10)
fighter.RegisterStat("MP", 10)
def PerformAction(self, fighter, target):
if (self.IsAvailable(fighter)):
if (target != None):
fighter.Stats.MP = fighter.Stats.MP - self._cost
if self._sfx != None:
renpy.music.play(self._sfx, channel="sound", loop=False)
face = fighter._battle.GetFacing(fighter.Position, target[0].Position)
fighter._battle.ChangeFighterState(fighter, "magic", facing=face)
# Make sure that the camera centres on the target before the spell goes off
fighter._battle.PointOfInterest(fighter=target[0])
sprite_flip1 = False
if (fighter.Position.X < target[0].Position.X):
sprite_flip1 = True
tag = "MagicFighterAttackSkill2_"+target[0].Tag+"_"+str(renpy.random.random()*1000)
l = fighter._battle.GetLayer('Fighters')
if self._sprite_special != None and self._pause > 0 and dice(50):
renpy.show(tag, what=self._sprite_special, at_list=[Position(xpos=0.5,ypos=0.], layer=l, zorder=fighter.Position.Z + 0.001)
And I would like this image in the last line Resized, and apply transitions on it. But I'm not sure where to write that...
and I want this image in last line Resized, and apply transitions to it, but I just don't know where to write it...
I'm sorry to ask again, I tried to find it in renpy documentation, but without much luck.
Code: [Select]image Flame SniperS:
Image("content/chars/Sailor_mars_test/Mars/combat (10).jpg")
pause 0.3
Code: [Select]renpy.show(tag, what=self._sprite_special, at_list=[Position(xpos=0.5,ypos=0.], layer=l, zorder=fighter.Position.Z + 0.001)
Code: [Select]renpy.show(tag, what=self._sprite_special, at_list=[Position(xpos=0.5,ypos=0.], layer=l, zorder=fighter.Position.Z + 0.001)
And I would like this image in the last line Resized, and apply transitions on it. But I'm not sure where to write that...
Please be more specific, what are you trying to do?
$renpy.show('chr', what=chr.show('date',resize=(int(config.screen_width*0.85), int(config.screen_height*0.785))), at_list=[Position(ypos = 0.8])
Also, do I need to take config sizes into account, or the game can do that automatically? Like this from interaction:Code: [Select]$renpy.show('chr', what=chr.show('date',resize=(int(config.screen_width*0.85), int(config.screen_height*0.785))), at_list=[Position(ypos = 0.8])
I want to display big image over the whole screen as a part of some skill animations. (It's often used in some fight games and I think it looks cool)
But the images in BE's assets.rpy are loaded directly so they can easily end too small or over-the-screen big. I need to specify the size they should fit in somewhere. I know that we have something called ProportionalScale class in game, but I don't understand how set up something like that.
Ok, if we don't allow changing resolution, then I can do it manually.
...and that probably also means that all of my girlpack images over 800 height are a wasted disk space :)
Ok, with your help I changed MagicFighterAttackSkill class to allow missile spells, and created 3+1 spells to test it, and after like 100 errors I got in last two days it seems to be working.
So I satisfied my curiosity for a while and I will go back to much more tedious tagging :)
But DB is probably fine, most of it is in assets and skills BE files + few sprites and test girl. But the skill registration is in functions,characters and arena (don't know if it's all needed, I just look for all places with earth spell and copy paste new ones under it).
Great freaking job on new Animations!!! Congratulations :)Good news is, that after setting up the code for type of sprite movement (skill class), additional animations using it created from existing sprite files found on net (and there is a lot of them) ale totally easy to set up. And I found sites with lots of sounds too (http://www.sounddogs.com/sound-effects.asp), so creating a new one takes only like 15-30 minutes (If you don't want to draw your own, obviously). So I can probably make a lot of these when we will want it.
BE also allows sprite states (standby, attack, on_hit...) for making characters animated, but that's a total overkill.
I don't think I understand the game enough to make "tutorial" ones, but I would like to make a tailor and then some others who don't have any real use in the game yet, but I have plans to use then in some quest later - a corrupted judge, young landlady and a mad scientists and his bodyguard. (I could make some small introduction event perhaps)
Yeap, but the trick is figuring out how integrate BE into PyTFall or/if add rows. Preferably without breaking other schemes. Question now is to decide when to start messing with BE, I'll have couple of hour free tonight, I was planning on taking a look at girlsmeets and maybe put in a new location (like beach) but if we can make a final decision to stick with FF styled BE, I'd love to start digging into that code :)
class NestingClass(object):
def __init__(self, child):
self._child = child
def __getattr__(self, name):
if name in self.__dict__.keys():
return object.__getattribute__(self, name)
else:
if "_child" in self.__dict__.keys():
return getattr(self._child, name)
return None
def __setattr__(self, name, value):
if hasattr(object, name):
object.__setattr__(self, name, value)
return
elif hasattr(self._child, name):
setattr(self._child, name, value)
object.__setattr__(self, name, value)
def getClass(self):
return self._child.__class__
__class__ = property(getClass)
You plan sounds great, did you manage to find pictures for those locations? I would also like some "play beach volleyball" action showing some pic with chance of increasing agility + constitution... maybe something more along those lines.All BG I found are in my DB under the link I placed in our shared DB, or in Roman's BG folder you once posted.
All BG I found are in my DB under the link I placed in our shared DB, or in Roman's BG folder you once posted.
Didn't you post links to all pics an hour go??? Let me know when you decide on the rest.Ok, its done and uploaded to DB.
Ok, its done and uploaded to DB.
Sorry, it was little more work than I thought, because most of the pics were in 4:3 ratio while we need 16:10. But there shouldn't be any easily noticeable distortion now, like there were before in out beachdate example.
It turned out much better than I expected, because now we can actually go to the palms or to the cliffs from the original picture :) . But I still can't find any suitable interior...
If I made only small changes (like adding a few lines somewhere, improve picture, create another battle animation) should I send them, or wait until something bigger?
I'm still not exactly sure how repository works... I don't want to break something
Ok.
I uploaded tailor npc images and placed her in backroom of our store (Nothing is actually happening here). I will have few busy days now, so I made a proper event later.
create another battle animation
Library.Skills.SwordAttack = AttackSkill(command=[('Attack', -1)], multiplier=1.2, sfx="content/sfx/sound/be/sword.wav")
is enough.Is there a way to start event right after selecting a girl from meet girls selection, instead of gm menu with interactions that normally appear?
I know that were adding something into girlmeets to support custom labels, but I forget what that was.
I'm trying to figure out good place from where to start girlpack dependent events.
label gm_interact_hire_Hinata:
define h = Character('Hinata', color=blue)
hinata = char["Hinata"]
if hinata.disposition > 500:
h "Ok, I don't mind working for you!"
"MarsFlameSniper"? Are we gonna use custom skills for various characters? Like Byakugan buff for Hinata or something?
Why instead of the menu? I was planning to make the menu customizable as well but not for the Alpha.I'm thinking of making some girl recruitable through event/small quest - something that works like Tifa quest. And placing beginning of that in random city event feels not very practical and a bit of forced to me. I believe selecting a girl in "meet girls" would be more natural start.
good news
image fireball = anim.Filmstrip('path to image', (192, 192), (5, 3), 0.1, loop=false)
image Whirlwind:
"content/gfx/be/Windwhirl_1.png"
pause 0.06
"content/gfx/be/Windwhirl_2.png"
pause 0.06
"content/gfx/be/Windwhirl_3.png"
pause 0.06
"content/gfx/be/Windwhirl_4.png"
pause 0.06
"content/gfx/be/Windwhirl_5.png"
pause 0.06
"content/gfx/be/Windwhirl_6.png"
pause 0.06
"content/gfx/be/Windwhirl_7.png"
pause 0.06
"content/gfx/be/Windwhirl_8.png"
pause 0.06
"content/gfx/be/Windwhirl_9.png"
pause 0.06
"content/gfx/be/Windwhirl_10.png"
pause 0.06
"content/gfx/be/Windwhirl_8.png"
pause 0.06
"content/gfx/be/Windwhirl_9.png"
pause 0.06
"content/gfx/be/Windwhirl_10.png"
pause 0.06
"content/gfx/be/Windwhirl_11.png"
pause 0.06
"content/gfx/be/Windwhirl_12.png"
pause 0.06
"content/gfx/be/Windwhirl_13.png"
pause 0.06
"content/gfx/be/Windwhirl_14.png"
pause 0.06
"content/gfx/be/Windwhirl_15.png"
Nice, I could use it for some characters that have omgwtf attacks, like Ar Tonelico song magic (http://www.youtube.com/watch?v=cH0Ho61n-6I&feature=player_detailpage#t=75).
Finished with Tekken, doing Blazblue pack now. I'm planning to deal with all those fighting series that have been used as crossovers in Queen's Blade (Blazblue, Guilty Gear, Soul Calibur, DoA + 3-4 less known games), then will create unique characters from dragon quest in addition to already created random ones, then will convert those my packs from wm ex that haven't been converted yet. After that probably Touhou again. I think it will take all the time before the alpha, if not beta in case of Touhou.
As for custom skills, I'll wait for more stable BE for a start, since I already saw you forced Cherry to add attacks in more than one place :)
I'm thinking of making some girl recruitable through event/small quest - something that works like Tifa quest. And placing beginning of that in random city event feels not very practical and a bit of forced to me. I believe selecting a girl in "meet girls" would be more natural start.
Why they draw the pics so cute?? I have like 5000 images to tag for just 2 girlpacks, which is totally exhausting, but it's so hard to force myself to throw away some...
Well, you can already write custom replies, if you want, I might be able to throw in a custom meeting label as well (I need to check the code). Event manager will have to be improved but it's also a good option.I was wondering if I can:
I was thinking more along the lines of Rukia having "charm" skill with the masturbation animation I once left instead of a brothel pic :)That's unusual concept. Iirc, in the source she prefers that zanpakuto thing that actively uses ice element :D
Do we actually need so many?That's still nothing compared to wm. I only have about 4 GB of packs on my Mega account, while the first torrent with wm I downloaded about 3.5 years ago containing most (but not all) of existing packs was about 12 GB. Both are archived, of course.
Please read my two previous posts.Can't help but recall that story with one girl/one guy tags ::)
I was wondering if I can:
1. create a girl with her location=city in data.xml so she will appear in girlsmeet
2. right away, or after some condition (like disposition>200) jump to a custom label instead of gm menu
3. in custom label change her location to something made up (location=in_quest_02) so she will not appear anywhere until it's changed again
That's still nothing compared to wm. I only have about 4 GB of packs on my Mega account, while the first torrent with wm I downloaded about 3.5 years ago containing most (but not all) of existing packs was about 12 GB. Both are archived, of course.
Can't help but recall that story with one girl/one guy tags ::)
May I suggest that you download the vanilla version and see what packs dev team put in? There is other stuff to do, but we still have time before the Alpha as well I guess...Are you casual? :D
but skills are a poor example, even if we change the concept, only one or two words would have to be added to skills themselves, girls/mobs/items/monsters files will take the beating.And if we'll use another BE? Like Eliont will make his BE perfect, and you only will need to grab it?
Manually, that would be easy... gamewide, might be a lot trickier. Gamewide, it can either be done by an event system or by jumps to custom labels. I think we can do a very simple solution for now, I'll write a function that will jump to a girl_id label if you pick that girl in girlmeets AND girls location is set to "girlmeets-quest". Game will send all girls with the girlmeets-quest location to girlsmeets as well. Than, game will jump to girl_id label (label Hinata:) for example, from there you will own the flow of the game and do whatever you like. A system like that will be very easy to add to an event manager when we actually have one. How will you get disposition to 200 if you cannot interact? Better option would be to check hero's stats like charisma.Yup, sounds great.
Actually, indeed it's not like I have something else to do before the alpha. Traits, items, mobs are done on my part, I only forgot to add new effects to traits xml, but I'll do it at this weekend.
And if we'll use another BE? Like Eliont will make his BE perfect, and you only will need to grab it?
Would it work I write into my custom label that the game should jump back to girlmeets if disposition<200 ?
$ jump(pytfall.gm.label_cache)
Would it work I write into my custom label that the game should jump back to girlmeets if disposition<200 ?
Now if only I was better writer :) It's so hard to came up with something that doesn't look plain stupid...
I can find something to do for youLike what? You know I'm not a writer or artist ::)
Like what? You know I'm not a writer or artist ::)
Maybe revisit all of your packs before the Alpha? I am getting sex images on profile pics every now and again.I will fix them right away if you'll be more specific with characters names. Full Revisit = Slave Training.
7) There are to many Warriors in your packs, even if they are used in the Arena, player will never see them until post Alpha. See if you can cut a few, I'll add an option to switch occupation on a very high disposition.Alright. How many unique warriors we might need for alpha?
10) Mobs you've created, all work off FistAttack, noone has any other attack, magic.I was under impression that we don't have a decent, ready for use set of BE skills yet even for characters, not to mention mobs. Especially in the absence of elements.
2-6 paragraphs sound interesting, I'll take a break from packs making and take care of them tomorrow at work.
I will fix them right away if you'll be more specific with characters names. Full Revisit = Slave Training.
It's like if I find a bug in the game and tell you that you should revisit all the code instead of describing it :)
Alright. How many unique warriors we might need for alpha?
I was under impression that we don't have a decent, ready for use set of BE skills yet even for characters, not to mention mobs. Especially in the absence of elements.
I know for a fact that vivi from op has one.You're right, I misclicked anal and profile flags. I will upload new version asap, but if you have tagger, you can fix your version in two seconds instead of downloading 174 MB, picture name is anal (1).
PS: Right now game might overwrite this, but if you put arena_willing = "false" in girls file, she will not participate in the arena, ever.I'll do that.
Yeap, thats true but you could have used what we had :)Yeah, but I don't even know what to write there right now. Does the game have a list of existing battle skills in some file that I could view via notepad+ or something?
Yeah, but I don't even know what to write there right now. Does the game have a list of existing battle skills in some file that I could view via notepad+ or something?
Library.Skills = object()
# Now we're creating individual skills one by one and adding them to the library
Library.Skills.SwordAttack = AttackSkill(command=[('Attack', -1)], multiplier=1.2, sfx="content/sfx/sound/be/sword.wav")
Library.Skills.KnifeAttack = AttackSkill(command=[('Attack', -1)], multiplier=0.8, sfx="content/sfx/sound/be/knife.wav", name="Knife")
Library.Skills.ClawAttack = AttackSkill(command=[('Attack', -1)], multiplier=1, sfx="content/sfx/sound/be/sword.wav", name="Slash")
Library.Skills.FistAttack = AttackSkill(command=[('Attack', -1)], multiplier=1, sfx="content/sfx/sound/be/knife.wav", name="Hit")
Library.Skills.Fire1 = MagicFighterAttackSkill("Fire 1", attributes=['magic', 'fire'], damage=5, cost=5, range=4, sprite_impact=BattleSprite('fire 1', anchor=(0.5, 0.8)), pause=0.4, sfx="content/sfx/sound/be/fire.wav")
Library.Skills.Fire2 = MagicFighterAttackSkill("Fire 2", attributes=['magic', 'fire'], damage=10, cost=8, range=4, sprite_impact=BattleSprite('fire 2', anchor=(0.5, 0.8)), pause=0.8, sfx="content/sfx/sound/be/fire2.wav")
Library.Skills.Fire3 = MagicFactionAttackSkill("Fire 3", attributes=['magic', 'fire'], damage=7, cost=10, sprite=BattleSprite('fire 1', anchor=(0.5, 0.8)), pause=0.4, sfx="content/sfx/sound/be/fire.wav")
Library.Skills.Water1 = MagicFighterAttackSkill("Water 1", attributes=['magic', 'water'], damage=5, cost=5, range=4, sprite_impact=BattleSprite('water 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/water.wav")
Library.Skills.Water2 = MagicFighterAttackSkill("Water 2", attributes=['magic', 'water'], damage=10, cost=8, range=4, sprite_impact=BattleSprite('water 2', anchor=(0.5, 0.8)), pause=1.2, sfx="content/sfx/sound/be/water2.wav")
Library.Skills.Water3 = MagicFactionAttackSkill("Water 3", attributes=['magic', 'water'], damage=7, cost=10, sprite=BattleSprite('water 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/water.wav")
Library.Skills.Earth1 = MagicFighterAttackSkill("Earth 1", attributes=['magic', 'earth'], damage=5, cost=5, range=4, sprite_impact=BattleSprite('earth 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/earth.wav")
Library.Skills.Earth2 = MagicFighterAttackSkill("Earth 2", attributes=['magic', 'earth'], damage=10, cost=8, range=4, sprite_impact=BattleSprite('earth 2', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/earth2.wav")
Library.Skills.Earth3 = MagicFactionAttackSkill("Earth 3", attributes=['magic', 'earth'], damage=7, cost=10, sprite=BattleSprite('earth 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/earth.wav")
Library.Skills.Windwhirl = MagicFighterAttackSkill("Windwhirl", attributes=['magic', 'earth'], damage=5, cost=5, range=4, sprite_impact=BattleSprite('Whirlwind',anchor=(0.5, 0.9)), impact_duration=1.1, pause=0, sfx="content/sfx/sound/be/Whirlwind.wav")
Library.Skills.IceArrow = MagicFighterAttackSkill("Ice Arrow", attributes=['magic', 'water'], damage=10, cost=8, range=4, sprite_cast=BattleSprite('Ice Arrow cast',anchor=(0.5, 0.9)), cast_duration=0.6, sprite_fly=BattleSprite('Ice Arrow fly',anchor=(0.5, 0.9)), fly_duration=0.4, sprite_impact=BattleSprite('Ice Arrow impact',anchor=(0.5, 0.9)), impact_duration=0.9, pause=0, sfx="content/sfx/sound/be/Ice Arrow.wav")
Library.Skills.FireArrow = MagicFighterAttackSkill("Fire Arrow", attributes=['magic', 'fire'], damage=10, cost=8, range=4, sprite_cast=BattleSprite('Fire Arrow cast',anchor=(0.5, 0.9)), cast_duration=0.6, sprite_fly=BattleSprite('Fire Arrow fly',anchor=(0.5, 0.9)), fly_duration=0.4, sprite_impact=BattleSprite('Fire Arrow impact',anchor=(0.5, 0.95)), impact_duration=0.9, pause=0, sfx="content/sfx/sound/be/Fire Arrow.wav")
#For Sailor Mars
Library.Skills.MarsFlameSniper = MagicFighterAttackSkill("Mars Flame Sniper", attributes=['magic', 'fire'], damage=12, cost=9, range=4, sprite_cast=BattleSprite('Fire Arrow cast',anchor=(0.5, 0.8)), cast_duration=0.6, sprite_fly=BattleSprite('Fire Arrow fly',anchor=(0.5, 0.8)), fly_duration=0.4, sprite_impact=BattleSprite('Fire Arrow impact',anchor=(0.5, 0.9)), impact_duration=0.78, sprite_special=BattleSprite('Sailor Mars Flame Sniper',anchor=(0.5, 0.5)), special_duration=0.8, sprite_special_pos=At(truecenter), img_display_chance=100, pause=0, sfx="content/sfx/sound/be/Fire Arrow.wav", sfx_special="content/chars/Sailor_Moon/hino_rei/Mars Flame Sniper.wav")
# We'll create alternate spells which use the same sprites for the magic
# that enemy creatures use:
Library.Skills.Fireball = MagicFighterAttackSkill("Fireball", attributes=['magic', 'fire'], damage=6, cost=0, range=3, sprite_impact=BattleSprite('fire 1', anchor=(0.5, 0.8)), pause=0.4, sfx="content/sfx/sound/be/fire.wav")
Library.Skills.Aqua = MagicFighterAttackSkill("Aqua", attributes=['magic', 'water'], damage=6, cost=0, range=3, sprite_impact=BattleSprite('water 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/water.wav")
Library.Skills.Tremor = MagicFighterAttackSkill("Tremor", attributes=['magic', 'earth'], damage=6, cost=0, range=3, sprite_impact=BattleSprite('earth 1', anchor=(0.5, 0.8)), pause=0.6, sfx="content/sfx/sound/be/earth.wav")
PS: There is a simbrothel 2 RPG maker game
Now if only I was better writer
I've started filling in the gaps in girlsmeets, my writing is worse than yours BUT you should have told me that girlsmeets creation was so tedious (Like you did with BE Skills). One of the main points of the game design is to allow easy modding.Tedious? Something like tagging is tedious, this was the opposite - too much thinking causing my head to hurt. I tried to make every line unique.
I'll be setting new rules and allow for a much simpler checking of traits, occupation and most importantly, random lines with the next update. It will count everywhere, not just girlsmeets...
Tedious? Something like tagging is tedious, this was the opposite - too much thinking causing my head to hurt. Every line should be unique here.
I admit that it is an insane idea to make variations for every personality, but I started it anyway because 1) I had a lot of lines like that to start with that I could just copy/paste and 2) It's really something I would personally enjoy in game, more that stuff like arena or slavetraining
Disposition values there are from some table I just made up, they don't follow any math logic. Fell free to do anything with these.
------------------
I'm trying to add two or three arena teams now, just to learn how to do it. (looks very easy so far, that's great) If they will work, I'll upload them soon.
I've seen some talk before arena matches. Can this be customised for unique teams?
But too much simplification can make the code hard to read. Like, I'm used to it by now, but It was really hard for me to figure out how things work at first with all these classes around through multiple files.
I usually spend so much time on thinking out what to write/searching for images/figuring out how to make something work, that I'm not really bothered with writing something multiple times at all afterwards.
Ok, I split items xml, they are in items xmls folder. Not sure about traits, items are easy to classify by slot type, but several traits xml probably will be unintuitive.
May I assume that we have more or less fresh version of the game in db?
File "game/script.rpy", line 79, in script
File "game/script.rpy", line 138, in python
File "game/library/classes - support.rpy", line 26, in python
File "game/library/functions.rpy", line 46, in python
WindowsError: [Error 267] : u'C:\\RenPy\\Pytfall/game\\content/rchars/data_2k_tan.json\
Alright, I downloaded fresh copy from repository, and now I'm confused by file structure of rchars folder. Does it have other rules for tags and girls files? I have this one when I use the same structure that char folder has:
Ah, I see. It's just I tried to download rchar folder you linked in repository thread, and it confused me even more, since you moved and combined some of tags files.
Custom arena fighters in arena_fighters.json don't use any attacks in combat (both old like Randalf and new ones - they just stand there doing nothing).
Maybe it's not linked with the new system you created?
Also because they get shown in aftermath report, support for battle pic would be nice (now they use portrait)
Lol, now you actually can sell your last brothel and live on the streets :D
Guess we'll need a separate location like player house then. Maybe with furniture and upgrades.
Custom arena fighters in arena_fighters.json don't use any attacks in combat (both old like Randalf and new ones - they just stand there doing nothing).
Maybe it's not linked with the new system you created?
Also because they get shown in aftermath report, support for battle pic would be nice (now they use portrait)
Hey Xela, nice to see the projects still running smoothly. Just a quick thing, I could try writing meetscripts for your project. I've already done a couple for wm so maybe you could take a look at them and tell me what you think?. Just thought I would ask seeing as writing meetscripts is something I enjoy doing.
Found some decent sounds for all weapon types that we might have in the near future. In my db it's animation and sounds\BE folder.
Some types of attacks have several sounds, either use the one you like most or randomly select it during battle.
That would be great, cause we really are lacking in that area. Do you have dev environment setup already?Afraid not :( , but run me through the basics and i'll see what i can do :) .
Ok, they were using old names and container types, we'll have to update girls at some point as well but for now game will take care of that.Great, they're working now.
Just pushed, look inside the files for examples.
Afraid not :( , but run me through the basics and i'll see what i can do :) .
Found some decent sounds for all weapon types that we might have in the near future. In my db it's animation and sounds\BE folder.
Some types of attacks have several sounds, either use the one you like most or randomly select it during battle.
Great, they're working now.
I pushed a few sprites I used for testing. I'll improve these later, now I want to try creating a small event.
Awesome, you could out them in the game and push to SF yourself btw.I would appreciate a small (but complete :) ) pushing guide, just like that one for pulling in repository section.
Bow sounds like arrow hits wood, I don't think we have any wooden enemies even under mobs...Not exactly wood, but something solid for sure. It's the best free one for now, there are much better ones, but not for free. I'll continue my search tomorrow.
Good news is, that after setting up the code for type of sprite movement (skill class), additional animations using it created from existing sprite files found on net (and there is a lot of them) ale totally easy to set up. And I found sites with lots of sounds too (http://www.sounddogs.com/sound-effects.asp (http://www.sounddogs.com/sound-effects.asp)), so creating a new one takes only like 15-30 minutes (If you don't want to draw your own, obviously). So I can probably make a lot of these when we will want it.Have you tried this site? Bow + Arrow in search field gives me 985 sound effects :) I've used bow sf+fireball sf+explosion/freeze sf from this site to create fire/ice arrow.
After you got everything set up and played our pre-alpha version a little bit and actually took a look at what girlsmeets look like in PyTFall (SimBro 1x clone and very different from WM), take a look at labels - girlsmeets.rpy (or something similar) in the library/screen folder. Don't be overwhelmed by the code, it's actually VERY simple and after you glanced through it, I'll explain what's what.Right I'll get to that and see if I can't whip up something half decent :D . I think I might be odd in that i like making meetscripts :o
Right I'll get to that and see if I can't whip up something half decent :D . I think I might be odd in that i like making meetscripts :o
Edit: Okay downloading some of Darks girls now, are their any I need to make sure the game doesn't throw a fit? :DMaybe not anymore, but it was Hinata (Naruto0) and Alice Margatroid (touhou). + some random girls to fill the arena
Maybe not anymore, but it was Hinata (Naruto0) and Alice Margatroid (touhou). + some random girls for working arenaThanks for the heads up, I'll get them both just in case.
Thanks for the heads up, I'll get them both just in case.
I would appreciate a small (but complete :) ) pushing guide, just like that one for pulling in repository section.
Btw, do we have a heads-up as to who is and isn't officially working on this Xela?
That kinda sucks :( , still if you want you can add me to the list. I think i could really get into this.
Maybe not anymore, but it was Hinata (Naruto0) and Alice Margatroid (touhou).Just had a look at the script.rpy file, there both mentioned in it so it might still.
Library.Skills.CannonAttack = AttackSkill(command=[('Attack', -1)], multiplier=1, sfx=random.choice(["content/sfx/sound/be/Cannon_1.wav", "content/sfx/sound/be/Cannon_2.wav", "content/sfx/sound/be/Cannon_3.wav"]), name="Fire")
but its not working like that, I get only one sound for whole battle.
Is there a way to have random sound played on each attack? I tried this:Code: [Select]Library.Skills.CannonAttack = AttackSkill(command=[('Attack', -1)], multiplier=1, sfx=random.choice(["content/sfx/sound/be/Cannon_1.wav", "content/sfx/sound/be/Cannon_2.wav", "content/sfx/sound/be/Cannon_3.wav"]), name="Fire")
but its not working like that, I get only one sound for whole battle.
It cannot work like that but you'll simply be getting new sound every time you start and maybe load the game. You need to modify the Skill it self, if you want, I can quickly do it right now and push.Ok, I still need to learn I lot I see :)
Ok, I still need to learn I lot I see :)
I've actually pushed it like this. Because I started new game over and over, I didn't notice before.
I don't know how to do it, so if you would be so kind... but it surely doesn't have to be right now
Oki. By the way, we'll be equipping Attack skillz with items so we now need a cannon item... (Dark)? :PThis is for Maria's Tulip, I added some Rance girls into arena. Do arena girls need items too? If not, then we don't need one...
This is for Maria's Tulip, I added some Rance girls into arena. Do arena girls need items too? If not, then we don't need one...
I have to admit I really like the interface, despite it being a similar principal to wm's at the moment somehow it just looks miles better.
After you got everything set up and played our pre-alpha version a little bit and actually took a look at what girlsmeets look like in PyTFall (SimBro 1x clone and very different from WM), take a look at labels - girlsmeets.rpy (or something similar) in the library/screen folder. Don't be overwhelmed by the code, it's actually VERY simple and after you glanced through it, I'll explain what's what.
Will do, looking through that file now, would meetscripts for specific characters be the same or lain out differently?
this shouldn't even be handled by dev team, it's for modders. We'll never get this to Alpha if we try to cover everyone.Good point, my bad i'll get to work on improving the meetscript asap then.
Oki. By the way, we'll be equipping Attack skillz with items so we now need a cannon item... (Dark)? :PI'm thinking about releasing an optional hi-tech pack after the release at some point, with cannons, plasma weapons and stuff ;)
I'm thinking about releasing an optional hi-tech pack after the release at some point, with cannons, plasma weapons and stuff ;)
Lol, how cruel :)
Guess we could add penalty effect, maybe for both MC and girls, if they have max libido for several days in a row.
Doesn't make any sense to me... If someone have a nymphomaniac trait, then ok, but why should normal person get a penalty?
First of all, girls shouldn't have max libido for several days under normal circumstances, because every pack has mast pics, if you know what I mean.
It's either drugs of some kind, nymphomaniac trait
I personally don't really favor this "hunger for sex" libido concept...
I would prefer if libido meant the amount of customers a girl can service, before she becomes "oversexed" and unhappy. (a normal solid stat)
But whatever....
And for non prostitute types?
Libido is currently listed under prof stats, so it could be just useless for a warrior as other skills there, like striptease. (at least unless we add something like "teasing fighter show" as a job :) )
========EDIT======
But Ok, I gave it a serious thought and this is my option:
I think that Libido could work little like fatigue stat. It should increase over time (at the end of a day), but not over it's maximum. But this maximum will be different for each girl (like 0=frigid, 40=normal, 100=total nympho). Each sex act will decrease it's momentary value, and if that would cause lovering libido under zero, a girl will get a performance/happines hit. If libido is at it's maximum for few days (unsatisfied girl) then something like you described should happen, but depending on how hight the maximum is. Normal girl with max. libido 40 may be more willing to have sex, but nothing else will visibly happen, with max. 70 may waste her AP masturbating and with 100 she'll jump the first thing she sees.
Why: libido is in some games, and I just found it annoying that your sweet innocent (or noble and refined) girl turned into a sex maniac just because her libido increased over time. It's fun if you caused that (training or drugs) or if she is like that from the begining, but not if it's just happening to everyone because of the system.
Normal girl with max. libido 40 may be more willing to have sex, but nothing else will visibly happen, with max. 70 may waste her AP masturbating and with 100 she'll jump the first thing she sees.I like the idea, actually. The more max libido is, the less is self-control.
I like the idea, actually. The more max libido is, the less is self-control.But I'm wondering if it not too complicated and unintuitive to do it all within libido stat. Something else may be better...
But I'm wondering if it not too complicated and unintuitive to do it all within libido stat. Something else may be better...
----------
If a girl have a high disposition towards MC she should probably seek his "help" first.
And also because most les pic are happening between girl from same series, someday later if we decide to have relationships, maybe use some help from a friendly co-worker :)
I looked at the new girlmeets hiring - seems good.
I was actually thinking about setting the required disposition in girl data files, because one of the ideas we talked about earlier was to allow changing occupations and for that we would probably need to set up what is allowed and what isn't (=no good pics for that) here anyway.
But that probably wouldn't be compatible with the "girls life" system you have planned post alpha.
but wow, so many changes :) I'll need a while to look at that...
Hey all. In regards to the whole libido thing, I could have a look at writing up something after meetscripts if you want me to give that a go?
Meetscripts will take a while, also, there are interaction scripts that are more important. Libido is basically code, it only requires some responses during the next day and maybe some events.Okay, just running a quick spellcheck through the girlsmeet script first
- if kayo_music_on:
- stop music fadeout 1.5
- $kayo_music_on = False
We didn't talked about music yet, but I believe that if there will be background music in the city, It shouldn't stop and change every time you enter or left a shop. So the purpose of this was to stop the music only if I started it, and not if something else is played.@Xela: You deleted me this:Code: [Select]- if kayo_music_on:
We didn't talked about music yet, but I believe that if there will be background music in the city, It shouldn't stop and change every time you enter or left a shop. So the purpose of this was to stop the music only if I started it, and not if something else is played.
- stop music fadeout 1.5
- $kayo_music_on = False
I will comment my stuff better, I promise :)
I'm gonna stretch my legs and then see if I can add a beach today, also we need a proper pic for main square (or whereever tifas quest used to start), if anyone can find better pics for other locations as well, post some thumbnails please.Have you looked into My/DarkTl's/(that one on torrent) BG folders? If we should post from there too, or just new ones from the net.
like a bell on entry to any shop or crowd on entry to main street or brids/some random sounds on entry to citymap but music should play whereever people lingerThat reminds me, I have many such sounds in my db already.
I wonder, would it be more practical to seperate meetscripts into different locations seeing as we have control over that, or should I try and keep it as one file?
Have you looked into My/DarkTl's/(that one on torrent) BG folders? If we should post from there too, or just new ones from the net.
Whatever makes work easier, but none of the labels that I recall were that big. File is still of an acceptable size.True, but it does have some of the option missing, plus it will only get larger in future so it will probably be more practical to split it now, also it would make adding meetscripts to new areas easier I guess.
True, but it does have some of the option missing, plus it will only get larger in future so it will probably be more practical to split it now, also it would make adding meetscripts to new areas easier I guess.
I've noticed that every instance of optimistic checks for lolita as well as in "elif "Optimist" in chr.traits and "Lolita" in chr.traits", which implies that all optimists are also lolitas or vice versa.I wrote condition
So should I change these to "or" instead so that their used with one or the other and not just both in conjunction?
elif "Optimist" in chr.traits and "Lolita" in chr.traits:
that means that these lines will be shown only if the character have both Optimist and Lolita. (=something close to cheerful little sis archetype)I've noticed that every instance of optimistic checks for lolita as well as in "elif "Optimist" in chr.traits and "Lolita" in chr.traits", which implies that all optimists are also lolitas or vice versa.
So should I change these to "or" instead so that their used with one or the other and not just both in conjunction?
@Xela Right, thanks for clearing everything up, so its alright to shorten the old lines with your new command option for them?
Are there any traits in particular I should focus on adding lines for in either of your opinions?
You can do it in your own way of course, I don't think I will be adding something there for a while.Haha, ok just wanted to run it past you first. Your stuff is actually very well done and really well layed out, makes my job a hell of alot easier.
Like I've said, just go with your gut, I wouldn't know what to write for a good half of traits during girlsmeets.I'll do that then, Just wanted to make sure were all on the same page with this you know, Still got some catching up to do.
Edit: I forgot to add that the example I used had a # before it and no actual text so I wondered if it was a WIPMissed this one>
I guess he should have general lines, like "agree" and "disagree" during a question, or "ask her about X" during a conversation.Good point, I have to agree with you there, after all we do want the MC to feel like their part of the game.
Lines that I commented out with # are probably lines that doesn't have enough answers. It would be too repetitive, so it was better to leave them out and use normal ones.I'll see if I can't come up with something to fill in those holes then
You can do anything with my part too, of course.No problems here, and no need to worry in regards to the coverage. THat is why I'm here I believe ???
I had lines first (ripped out of artificial girl 3 game) and I was figuring how to use them, so that's why it may not make much sense sometimes (like some categories missing, or why we have some secondary traits covered and not the most common ones)
It's true that charisma doesn't actually do much atm and it's not used in meetscripts at all.
Which actually leads me on to a question of my own, do you think i should make compliments have a higher success rate with egocentric people seeing as they do love being complimented and all.
Otherwise: FY(&(UIYHUGOBI Son of a $**%(, just wasted two hours because of a spelling error...??? That may just be the single greatest exasperation in the history of the internet ???
in regards to the new function replacement I'm doing :
disposition checks should be changed from-
if chr.disposition > 50
to
if d (50)
correct?
Edit -
In regards to rc and ct functions, I assume that the variables (lines/traits) go within the brackets correct?
Sorry for throwing so many questions at you :( , I just prefer getting rid of problems by not having them to start of with.
Sounds good to me, so how does the beach work atm. Is it just one section or can you move up and down it?
Awesome, shall I keep going with what i'm doing or do you want the grammar checked version?
Added new effects, fixed typos in traits xml.
While testing beach, I randomly met slime rmg there. So now I wonder if girls with not human trait should dwell in remote, natural locations, like forest or beach, while human girls should be in the park or at central street.
Let's see, Beach is good for Athletic, Tomboy, Not Human; bad for Shy, Sensitive, both scars traits.
Dark Forest (I believe we should use it for meetings too, not just for the Hut) is good for Not Human, Adventurer, Alien, bad for Kleptomaniac, Edgy, Noble.
Arena is good for Hyperactive, Combat Training, Aggressive, bad for Meek, Kind, Edgy.
Main street is good for Professional Maid, Kleptomaniac, Noble, bad for Not Human, Alien, Cat Girl, Artificial Body.
Park is good for Psychic, Impersonal, Cat Girl, bad for Hyperactive, Aggressive.
Curious should negate all traits, so you can meet curious characters anywhere no matter other traits.
Yup. Maybe except the arena, it's rather specific place.
Fire element graphic looks good.
but I think this should be show not in "stats" tab but in "pro stats" under battle stats.
Also I believe that profile screen could use another tab next to these, "info" with girl full name, origin and description
=======
Transitions between city screens (with irisin) are much slower then the usual dissolve ones, could these be accelerated?
I'd say cafe should be a separate location for meetings, not just shop only.
Guess we need some kind of neutral icon for characters without elemental affinity as well.
Took me awhile to figure out what qs and lq buttons do :)
You could use parts of save-load.dds file in my db\Agarest folder instead.
Also I believe that profile screen could use another tab next to these, "info" with girl full name, origin and description
Or maybe some symbol of balance.I'll try to find something decent tomorrow.
Doesn't it say what those buttons do in tooltips whereever available?Yup, but I'm used to ignore tooltips, since many gui elements don't have them even now :)
I wonder if we should add "modder" and "version" fields as well, I've seen many game doing that.It will effectively break the fourth wall though, so I'm not sure about it.
I'll try to find something decent tomorrow.
Yup, but I'm used to ignore tooltips, since many gui elements don't have them even now :)
It will effectively break the fourth wall though, so I'm not sure about it.
As for tooltips, I proposed earlier to reprogram right mouse button and make it show tooltip for current gui element instead of main menu.
I thinking about making a "lite" versions of some girlpacks (=instead of 300 images I put in just 40). I would like to have some more girls available for few events I have in mind, but the high possibility that we will need to retag them again seriously scares me.
Is that acceptable, or you would rather have only completed stuff around?
That's how I originally planned it, you and dark were the once who shut that idea down :)True enough :D
So If you don't find the whole idea stupid
may I ask what do you thing would be a good task for MC to do?
Go through the quest? If you're asking me for ideas, I cannot help you since I have 0 knowledge about the series. If you need more than the event system/girlsmeets can provide, let me know. Also if you require conditioning or sorting beyond your knowledge of game/python.sorry, I meant it a little differently. It can be in general terms (forget vocaloids). For example, earlier you talked about that we could place some NPC that would request items. So what I'm wondering about is, what would be a good task (=challenge) for player to get this items.
sorry, I meant it a little differently. It can be in general terms (forget vocaloids). For example, earlier you talked about that we could place some NPC that would request items. So what I'm wondering about is, what would be a good task (=challenge) for player to get this items.
Only asking if, by chance, you or someone have something in mind already (collecting ideas).
----------------------------
I looked for some location bgs, there are some nice ones I think, but it's hard to decide about the style when we have not yet decided about the main city map pic. And sadly, I don't have anything good for that...
---------------------------
Some girl have really nice collection of expressions - http://img24.eu/images/14jlx9b7.jpg (http://img24.eu/images/14jlx9b7.jpg)
If there was a need for tutorial girl, she would be my candidate :)
---------------------------
Maybe we could use some achievents in future. Like "earn a milion","collect ten lolis","rot in a prison","catch all social diseases at once" etc...
Hey guys, I apologize for the absence all day but I had a gig so been gone most of the day.
Now i'm back i can get back to work hurray :D
PS: I don't think we actually require more than one alignment level for Alpha. It would require a lot of time to put magic and alignment into context, keeping it superficial is a better bet.That was the plan from a start. We still need to decide if it would be possible to have opposite alignments at the same time.
That's how I originally planned it, you and dark were the once who shut that idea down :)Huh. (http://www.quickmeme.com/img/08/08ef803fd3d20cabbce6e92ded08609800ebfbc1a0f24581106bfd6d4e728cc9.jpg)
- have her bodyYup, I have similar ideas for androids from my packs, but without EE it would be difficult to implement properly.
- found the box with vocaloid software
- make a deal with a scientist and escort him to a place where he can revive her
with a little dark opportunity to upload a somewhat altered software in ;D
That was the plan from a start. We still need to decide if it would be possible to have opposite alignments at the same time.
raise Error, list(itertools.combinations(nature_elements, 2))
[('Fire 1', 'Fire 2'), ('Fire 1', 'Water 1'), ('Fire 1', 'Water 2'), ('Fire 1', 'Earth 1'), ('Fire 1', 'Earth 2'), ('Fire 1', 'Darkness 1'), ('Fire 1', 'Darkness 2'), ('Fire 1', 'Light 1'), ('Fire 1', 'Light 2'), ('Fire 1', 'Air 1'), ('Fire 1', 'Air 2'), ('Fire 2', 'Water 1'), ('Fire 2', 'Water 2'), ('Fire 2', 'Earth 1'), ('Fire 2', 'Earth 2'), ('Fire 2', 'Darkness 1'), ('Fire 2', 'Darkness 2'), ('Fire 2', 'Light 1'), ('Fire 2', 'Light 2'), ('Fire 2', 'Air 1'), ('Fire 2', 'Air 2'), ('Water 1', 'Water 2'), ('Water 1', 'Earth 1'), ('Water 1', 'Earth 2'), ('Water 1', 'Darkness 1'), ('Water 1', 'Darkness 2'), ('Water 1', 'Light 1'), ('Water 1', 'Light 2'), ('Water 1', 'Air 1'), ('Water 1', 'Air 2'), ('Water 2', 'Earth 1'), ('Water 2', 'Earth 2'), ('Water 2', 'Darkness 1'), ('Water 2', 'Darkness 2'), ('Water 2', 'Light 1'), ('Water 2', 'Light 2'), ('Water 2', 'Air 1'), ('Water 2', 'Air 2'), ('Earth 1', 'Earth 2'), ('Earth 1', 'Darkness 1'), ('Earth 1', 'Darkness 2'), ('Earth 1', 'Light 1'), ('Earth 1', 'Light 2'), ('Earth 1', 'Air 1'), ('Earth 1', 'Air 2'), ('Earth 2', 'Darkness 1'), ('Earth 2', 'Darkness 2'), ('Earth 2', 'Light 1'), ('Earth 2', 'Light 2'), ('Earth 2', 'Air 1'), ('Earth 2', 'Air 2'), ('Darkness 1', 'Darkness 2'), ('Darkness 1', 'Light 1'), ('Darkness 1', 'Light 2'), ('Darkness 1', 'Air 1'), ('Darkness 1', 'Air 2'), ('Darkness 2', 'Light 1'), ('Darkness 2', 'Light 2'), ('Darkness 2', 'Air 1'), ('Darkness 2', 'Air 2'), ('Light 1', 'Light 2'), ('Light 1', 'Air 1'), ('Light 1', 'Air 2'), ('Light 2', 'Air 1'), ('Light 2', 'Air 2'), ('Air 1', 'Air 2')]
Huh. (http://www.quickmeme.com/img/08/08ef803fd3d20cabbce6e92ded08609800ebfbc1a0f24581106bfd6d4e728cc9.jpg)
We don't have any human rgirls... Also I am thinking we should prolly make packs with 3 - 4 pics best pics per category.
Leaving aside the discussion about different tastes for different people, all pictures in my packs are already best from my perspective, without any significant flaws. If you or anyone else don't have enough space on hdd, just delete those you personally don't like :)
my thoughts exactly, sorry xela! :-)
Yup, I have similar ideas for androids from my packs, but without EE it would be difficult to implement properly.
Opposite? I wouldn't want them to be allowed to have any two alignments at the same time, unless they make up some unique new element.I thought about combinations like fire and earth (=lava spells), or light and air (=lighting spells), but I'm not sure about combinations like light and darkness, it even sounds strange. On the other hand, in Naruto they have opposite elements AND some characters can use any combinations, making uber technics.
I thought about combinations like fire and earth (=lava spells), or light and air (=lighting spells), but I'm not sure about combinations like light and darkness, it even sounds strange. On the other hand, in Naruto they have opposite elements AND some characters can use any combinations, making uber technics.
$ test_once_1 = False
$ jump("test_menu_1")
label test_menu_1:
menu:
"question 1 repeatable":
"answer 1"
$ jump("test_menu_1")
"question 2 only once" if not test_once_1:
$ test_once_1 = True
"answer 2"
$ jump("test_menu_1")
"leave":
pass
$ del test_once_1
"and continue"
and that doesn't look as good as yours@Xela: Please, you must tell me, how did you create a menu for that arena girl Xeona? I'm looking at the code, but I don't get it. How you do, that if you select one question, you get back to the same menu to select another or the same one, all within one label? Without jumps anywhere in the choices (like they telling me to do in renpy tutorial)
$ a_skip = False
while not a_skip:
"I know all I need to...":
ax "See you around!"
hide npc xeona
with dissolve
$ a_skip = True
# Keeping global namespace tidy:
$ del a_skip
while True:
break
while 1:
break
Renpy tutorial is only telling me to do it like this:
$ jump("test_menu_1")
jump test_menu_1
$ jump("")
will only work in PyTFall, it's our function, it will not make the jump if label does not exist and notify you of that fact if you are in the development mode.Thanks! All is working nicely. (lol, it look so obvious now ::) :) )
---------------
I pushed a small event for outside arena. (trying to learn how to do it)
---------------
The event manager doesn't seems to working well - simple_beach_event have "max_runs=50" but I never seen it again after first visit.
Also it seems that the only chance to see an event is on first "look around" in a day, never on consecutive attempts in same location (it that's not intended)
Now we need elemental affinity for mobs, unique and random girls. It probably should be random for random girls as well, like traits.
Alright. We do have 3 levels, right? Like darkness 3 for undead.
About disposition, our traits only change min and current value, but we do have some non consumable items (various shackles) that decrease max value. I wonder if I should change it to mod, or leave it as it is. After all, you always can remove them (maybe we'll have scripts in the future preventing it in some cases). And if you don't want to remove them (or cannot remove them yet in the future), well, no high disposition scenes for you (yet).
The text font used in girl description and in slavemarket is weird... doesn't fit in with the other screens at all. Do you really like it?
I added a few animations do my DB folder.
and I'm creating a super-short unique girl meetscript now, to test out the gm option for that you created (thanks again!)
Just got pwned in the arena, it never occurred to me that someone would shoot my modified fire arrow back in my ass :D 1k+ damage.So, does game over screen work properly? :D
You said something about going over mobs, it's prolly not the last time but could you add charisma and luck stats to them as well? (Remember that luck goes from -50 to 50). I'll see if I can cook up critical hits in the engine based on agility and luck this weekend.Yup, I'll add elements, charisma and luck to mobs tomorrow. Not attacks though, I think it's too early for that now, when we have new attacks almost every day.
Yeah, it took effort to get it done since that font doesn't have / | \ signs we use for stat value / maximum value. If it really bugs you we can go with something else... :(Seriously? ...
Yup, back then when I created shackles items (some of them are ports from wm), I thought we could use it somehow for slaves. They are completely useless in wm, and that's quite a shame. We should try to introduce them properly within slave training/rmg capturing systems in the future.
I've added elemental affinities to unique and random girls data files. Those who don't have any should be neutral, obviously.
So, does game over screen work properly? :D
Seriously? ...
It looks kinda computerish, reminding me of pipboy :) not bad, but also not like something to combine with wood frame...
Images in new girlmeet screen are too pixelated, as if the small image in meetgirls was resized instead of original one.
and another thing: how I can remove a girl from the meetgirl screen if I ran an unique label instead?
I tried $pytfall.gm.remove_girl(chr)
but that giving me this error:
File "game/library/classes - support.rpy", line 271, in python
TypeError: 'in <string>' requires string as left operand, not Girl
and how to use exclude tags?
I tried:
show('bikini', "beach", "swimsuit","summer", exclude=main_sex_tags, type="any")
and I get a beach sex image
elif type == "any":
tags_backup = tags * 1
tags.remove(self.id)
random.shuffle(tags)
while tags and not imgpath:
tag = tags.pop()
imgpath = self.select_image(tag, self.id, exclude=exclude)
tags = tags_backup
for entry in pytfall.gm.display_girls():
use r_lightbutton(img=entry.show("bikini", "beach", "swimsuit", "summer", exclude=main_sex_tags, type="any", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
and I get Slime's beach+sex, Leafa's bikini+les, Maid elf's summer+sex etc. (nothing wrong with tags)for entry in pytfall.gm.display_girls():
use r_lightbutton(img=entry.show('profile', "generic outside", "forest", exclude=main_sex_tags, type="any", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
because I never saw tenten's forest+sex pic. and I visited her at least 30 times. for entry in pytfall.gm.display_girls():
use r_lightbutton(img=entry.show("bikini", "beach", "swimsuit", "summer", exclude=main_sex_tags.append("strip"), type="any", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
Copy/Pasted your code, those are not sex pics, they are strip pics.Nope, they're still there. I just deleted the whole game and downloaded it again from repo (with the new 2 minutes old update) and got one on right beach at first attempt. If it's not happening in your game too, then I just don't know...Code: [Select]for entry in pytfall.gm.display_girls():
use r_lightbutton(img=entry.show("bikini", "beach", "swimsuit", "summer", exclude=main_sex_tags.append("strip"), type="any", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
Nope, they're still there. I just deleted the whole game and downloaded it again from repo (with the new 2 minutes old update) and got one on right beach at first attempt. If it's not happening in your game too, then I just don't know...
Nope, they're still there. I just deleted the whole game and downloaded it again from repo (with the new 2 minutes old update) and got one on right beach at first attempt. If it's not happening in your game too, then I just don't know...
Ever got this with an unique girl???Yes, I just confirmed that with Temari (summer+mast)
Yes, I just confirmed that with Temari (summer+mast)
But especially if Bowman comes through with girlsmeets and interactions, we're getting close to an Alpha :)No worries i'm still working on them, just a sort of trial and improvement type thing, so i'm improving it bit by bit i'd say 8)
FOUND IT :)Thats great! Congrats!
It's a method that has been created by Rudi, edited by me, then him again and by me like 3 times since then. I got things messed up in the process...
Thats great! Congrats!
It really looks good to have girls in bikinis on the beach. I'm glad we decided to do it like that. (and all the possibilities for the future...)
No worries i'm still working on them, just a sort of trial and improvement type thing, so i'm improving it bit by bit i'd say 8)
I just realized that one of the new pushes changes the pyt - labels - girlinteractions.rpy, ah well looks like i'm starting from scratch :-[
1) Should I remove everyone from dropbox who isn't around anymore?I would say yes, probably best to yet it to active contributers
2) Dark has a kickass elven city map in his DB, maybe we can come up with a story, like High elves leaving and now humans and other raises as well as remaining elves are trying to preserve it, learning how to control and maintain it's magic? We can add a beach to the top left corner of the map for now and later maybe someone might draw actual see/sand? What do you think?Definatly a interesting idea and sounds pretty cool, come up with something interesting we might.
3) What kind of transitions between the screens work best? And where?I'll leave decision on this to Dark and CW 'cause I don't mind the current ones to be honest
1) Should I remove everyone from dropbox who isn't around anymore?Pretty sure we won't see them again, at least as a part of dev group.
2) Dark has a kickass elven city map in his DB, maybe we can come up with a story, like High elves leaving and now humans and other raises as well as remaining elves are trying to preserve it, learning how to control and maintain it's magic?In Witcher humans win because they breed much more often. Furthermore, elven women there can (and want to) do it much more often with humans as well (it has something to do with hormones in human body). Talk about fanservice, huh? :)
3) What kind of transitions between the screens work best? And where?Clarify this question, please.
I'm not really a fan of elves. But I must admit that it looks good, especially that arena. It's hard to find anything from this perspective...
2) Dark has a kickass elven city map in his DB, maybe we can come up with a story...
3) What kind of transitions between the screens work best? And where?
Pretty sure we won't see them again, at least as a part of dev group.
In Witcher humans win because they breed much more often. Furthermore, elven women there can (and want to) do it much more often with humans as well (it has something to do with hormones in human body). Talk about fanservice, huh? :)
Clarify this question, please.
I'm not really a fan of elves. But I must admit that it looks good, especially that arena. It's hard to find anything from this perspective...
I was looking for many hours but only other city pics with arena I found is this one:
(http://img24.eu/m-493m2mm7.jpg) (http://img24.eu/v-493m2mm7.jpg)
So what I currently like the most is that "pixelate" on main creen, and definitely not "with irisin" because it's soooo slow right now.
"Fade" is interesting, but a little too much aggressive to my taste, when the first screen disappear instantly. But if the first screen (buttons and such) could dissolve first, it may look good in girl screens. (if it's fast :) )
Classic dissolve usually ok
And if you want to set something new... no idea
I think that the map is great and has great story/quest/events potential.Yup, it would be interesting to have more than one city in the game. We also could move 80-90% of non human characters there.
Transitions between screens. Like when you enter main screen, it turns the picture into pixels. Sometimes it fades, sometimes it dissolves. Sometimes it kinda zooms in or out like on the map. There will be an option to turn that off for slower machines but I wanted to know if you had any preferences.I'll take a look at it again when I'll return home. For now I can say that I agree with Cherry about speed.
Yup, it would be interesting to have more than one city in the game. We also could move 80-90% of non human characters there.
I'll take a look at it again when I'll return home. For now I can say that I agree with Cherry about speed.
Maybe we do need long animated transitions here and there when the game is loading something big, so it won't be instant anyway. Like when you select another brothel or even a city.
Ok, I have to say that I dislike that "pixelate" transition when you close girls menu and return to brothel main screen, it kinda annoys me :)
I'd prefer that simple dark fading like when you go to girls menu from general brothel menu.
That effect when you go to dark forest (or out of it) will be ok if it will be faster.
So we probably need settings menu for transitions effects, since it's a subjective thing.
If you want our opinion about other effects that renpy has, you could make a quick demo and upload it somewhere.
I added luck, charisma and elements to mobs json, and fixed one bug there (Assassin had Amazon Archer battle sprite :D ). And finished another girl from Blazblue. I wonder what I should do next, besides my work on pack.
Can't you make a json or xml settings file in renpy for deep customising, including transitions?
Another day, another girl :)
I'll probably write a guide for packs making tomorrow in addition to my work on packs. Also, I would appreciate a guide for quest/custom meeting creation. At least post alpha, if you don't have time for that now.
I'll never understood how can you manage to create a girl in just a day...
I'll never understood how can you manage to create a girl in just a day...Depending on a girl. One thing is Touhou, where almost every character has 25000+ pics on pixiv alone, not to mention other sources. Another thing is Blazblue which I'm making now, where even popular characters don't have more than 2000 pics, maybe 10-20 more if you look in every corner of internet.
I've been thinking, would it be more practical to use YAML instead of XML seeing as it's simpler to write stuff in?
We do not need folder field in xmls anymore, or it would be better to keep it for compatibility if nothing else?
Do we have any other optional fields besides fullname and nickname? I mean fields that may be missing in xml, and the game still won't have any errors.
I guess trait and absolute_block trait fields are not mandatory, for example.
I'll test it then. It's just I wonder what will happen if a girl doesn't have description (probably nothing, but who knows)
or occupation (pretty sure we need it)
or location (where she will be then?)
or status (will hse be slave or free?)
or stats (will they be 0 then?).
While our girls obviously will have these fields, it's kinda useful information for a guide.
I guess we need default settings for all fields, so if any major field is missing, it won't be a problem.
Wow, wow, wait a sec. If some trait/item increases min value of stats, it has nothing to do with negative values.
Then we need failproof checks that can determine if it possible at all to have low enough value, and if not, then these events will trigger with the current min value. But it won't be a problem until the release, I think.
Rotating alignment icons look great, although looks like we have too many neutral random girls. On the other hand, I expect items and events that can change alignment at some point, so maybe it's for the best.
Oh, that's not me, it's a bug. For priest rg I have now "elements": {"Light 1": 80, "Water 1": 100}, so they are either light or water anyway, but in the game they are neutral.
Olympics opening ceremony is pretty amazing btw.Olympics even have snoubordizm now ???
Nope, either you didn't fix it or didn't push it, still neutrals everywhere.
Also I noticed that the game doesn't show traits effects in Effects field. Is it a bug?
Ok, seems to work now. Still strange to see several neutral girls with 70%/90% element affinity chances though, but at least those who have 100 are not neutral anymore :)
About effects, for example, Sophie from "tales of" pack has retarded trait, so she has slow learner effect as well. Yet her effects list is empty.
[girl.element for girl in char.values() if girl.__class__ == rGirl]
To get a better picture.About gifts, I thought about DA approach, where different characters prefer different types of items, and gifts are special items that cannot be used in another way. In our case we could use traits to determine which gifts a character would like.
In case of meetings with characters that don't "belong" to you yet you need to figure out their traits for a start if you don't a want bad reaction to the gift.
there would also be simpler items that any girls with a specific occupation would wantI wonder about it. I cannot come up with a universal gift for any service girl, for example. Maybe weapons/armor are more or less universal for warriors, but it's too straightforward to me.
and maybe some gift items that anyone would want.Sure thing. Theoretically there could be characters without traits, after all.
Option 2: is to add a field like gift="true" to any normal item with some extra options.We could use this approach for occupation related gifts if you want it. I'll flag items with preferable occupations then, and such gifts probably should dissappear from the game after giving. Or become unremovable, except slaves, but this will only add complexity.
Option 3: do you think existing items carry enough data to determine if they are good gifts for girls based at least on girl's occupations?
If you decide to go with your suggestion, lets make new file for gift items a json, not xml. You can set it up in any way you like, just make sure to use as many of normal item fields as possible and show me a prototype.As example:
[
{
"id": "Elven Cape",
"icon": "content/items/cape/ec.png",
"desc": "Comfortable and noiseless cape from an unknown, soft material.",
"price": "1500",
"chance": "40",
"dismod": "20",
"infinite": "false",
"hidden": "false",
"location name": ["Forest", "Work Shop"],
"goodtrait name": ["Not Human", "Alien"],
"badtrait name": ["Noble", "Tomboy"]
}
]
I wonder about it. I cannot come up with a universal gift for any service girl, for example.
I wonder about it. I cannot come up with a universal gift for any service girl, for example. Maybe weapons/armor are more or less universal for warriors, but it's too straightforward to me.
Sure thing. Theoretically there could be characters without traits, after all.
We could use this approach for occupation related gifts if you want it. I'll flag items with preferable occupations then, and such gifts probably should dissappear from the game after giving. Or become unremovable, except slaves, but this will only add complexity.
Or we could just make weapons/armor good for warriors, dresses good for service, rings/amulets good for strippers, and maybe misc for whores. Very, very rough approach. Right now we only have flags for autobuying system, that's not enough, because many average items do not have them.
[
{
"id": "Elven Cape",
"icon": "content/items/cape/ec.png",
"desc": "Comfortable and noiseless cape from an unknown, soft material.",
"price": "1500",
"chance": "40",
"dismod": "20",
"infinite": "false",
"hidden": "false",
"location name": ["Forest", "Work Shop"],
"goodtrait name": ["Not Human", "Alien"],
"badtrait name": ["Noble", "Tomboy"]
}
]
I'm not sure how to handle universal gifts for any traits. We could use either dismod field if non of listed traits are match with the girl, or use "traits": {"Universal": 10} string.
You mean like in Alkion or something?
I fail to see significant difference between rooms and upgrades for brothel then. Furthermore, if you want rooms, decor and furniture, they probably should be in MC house mostly, since you mentioned that brothels won't be mandatory.
I don't know. It probably will be too complicated if every single brothel will have an extensive system of rooms (a lot of micromanagement), and more importantly, the same extensive system of rooms (=monotonous micromanagement).
I have no objection against MC house of any complexity, since a) it's only one house, not 10+ brothels; b) people like to have their own main base/house/castle/whatever in games, and I like it too :)
Reminds me of my discussion with Rudi about advantages and traits :)
Just like then, I don't see difference between the terms, except their names.
Rooms and upgrades, I mean. Upgrades work on concept of auto-assignment, they have upkeep, name, picture. Not square footage, but total number of upgrades in one brothel.
@Dark, when you get the chance, add attack="Sword Attack" and etc. fields to weapons. You can prolly push that to SF as well.Will do asap. As for nonweapon items, they are supposed to be unusable for actual attacks in BE, just giving more bonuses to stats instead. If it's too much trouble, I'll set them to spray or fist attacks for now.
Do you think we should add a menu before entering shops? Yes/No and take 1 AP on entry? We obviously cannot take 1 AP per purchase, but shopping shouldn't be AP free either...Yup, that would be useful, I think. Although this menu should be optional, since it will be a huge nuisance for experienced players.
Will do asap. As for nonweapon items, they are supposed to be unusable for actual attacks in BE, just giving more bonuses to stats instead. If it's too much trouble, I'll set them to spray or fist attacks for now.
Another thing is the slave market screen. When you browse slaves you cannot quickly close the market and return to brothel by pessing the cross, that's quite inconvenient.
Also I could use a quick, short cheat code of some kind for unlimited money for testing purposes, since slaves are not cheap at all :)
hero.gold += 100000000
I think we don't need "hidden" field after all. All gifts effects probably should be hidden.
Also, I wonder how to handle situations when a girl has several traits. For example, if some gift gives -50 to silly and +50 to kind, and we have silly kind character.
Yup, I try to make gifts as intuitive as possible. Trial and error method will help players too in some cases, it's not like wrong gift will kill the girl. Also I converted some existing items to gifts, like all flowers consumables.
As for conflicting traits, in such cases we could use the first matched trait in the list, ignoring others, like we do with mutually exclusive traits in random girls jsons.
Holy crap... the new on click sound is annoying... I didn't notice it yesterday, gonna get rid of it asap...it really is :)
Sorry, but I'm not into slaves at all, so I will not comment or contribute to this part of the game.
What did you guys think about the SM intro and club event?
Sorry, but I'm not into slaves at all, so I will not comment or contribute to this part of the game.
But generally, I must say that sound effects are improving the feel of events a lot, and that NPC guy is really good 8)
Are you working on the screens? Because they are really strange atm...
also there is "beauty" tag used in SM screen, I don't think it fits there. (at least I didn't used that tag like that, can't speak for Dark's girls)
---------------------------------------
I'm sorry, but I can't help with anything this week, too much RL stuff. :( (I only managed to tag few more images)
also there is "beauty" tag used in SM screen, I don't think it fits there. (at least I didn't used that tag like that, can't speak for Dark's girls)Yeah, I noticed that too. Seems out of place for many characters.
Yeah, I noticed that too. Seems out of place for many characters.
That event is fun and all. But why do you use Irma from my Queen's Blade pack as that mistress Blue? ::)
Also, let's not tread in the steps of early Alkion and use illegible fonts. While stats are more or less ok (still not perfect), descriptions of slaves are a big no.
!@#$%^ Didn't know... Maybe in this case, we could make her first fully intractable NPC out of her or something. Those two pics I got from Elionts Alkion's resources, not your pack (I am not 100% sure I have that pack loaded into the game). Finding NPCs without drawing from some characters will be more trouble than it's worth...Not really. You need to search with tag "original" at gelbooru or danbooru for example, plenty of independent chars there. I do not mind making her npc, she has only 32 pics (even though they cover all categories). But it should be dateable npc, if those pics will be unused, that would be a shame.
Early? Isn't that font still one of the most used in Alkion..? I need to look into the whole fonts thing, we currently only have fonts from Alkion and our current "default font" is to plain.At least they are bigger now after I pointed it out :)
Keep finding out the strangest things about core members of dev team after nearly an year of working on this together (before this it was Dark and BE)You don't expect from average people to work for years on indie hentai game, do you? 8)
Not really. You need to search with tag "original" at gelbooru or danbooru for example, plenty of independent chars there. I do not mind making her npc, she has only 32 pics (even though they cover all categories). But it should be dateable npc, if those pics will be unused, that would be a shame.
You don't expect from average people to work for years on indie hentai game, do you? 8)
Back when I was releasing pre-Alphas as proofs of concept, I got "This file has been downloaded to many times" Error...Yup, it's 200 GB per day for paid accounts. Thus, only 50 people can download all my packs from db per day (0 people from Mega though).
Looking forward to this project.
It might just be me but every time i click the images on the first post to get an enlarged version i keep getting the standard server not found message. But it works just fine if i go do the exact same thing on the futanaripalace thread.
Yup, it's 200 GB per day for paid accounts. Thus, only 50 people can download all my packs from db per day (0 people from Mega though).
I spend few hours looking for better city pic again, but without any luck. I can probably improve the current one a bit (cutting mountains out and making it more colored) but I don't like it much and I'm still wondering if it wouldn't be better to use a map instead.
It's grim but I am liking it a little better than the old one :)Ok... then I'll wait for a while and If we don't find something better until then I look into it.
and now I am looking into enabling right mouse button equipping items!
Don't know about you, I always use mouse with 5 or more buttons. More than enough for most of actions if RenPy supports it.
At very least we could use middle button for tooltips in the future. Or even allow players to customise mouse buttons functions.
Problem is that almost every picture that looks good is from a game that is too well known to use :(
like: (http://img24.eu/m-0qdhfrjk.jpg) (http://img24.eu/v-0qdhfrjk.jpg)
I should probably apologize for being so quiet on my end, been out of town visiting the gp's and only got back yesterday evening.
I'll see were I left off and get back to work.
Done with uploading packs to db. I still use password-protected archives with meaningless names for security reasons. All links in db links.txt file.
super(PytCharacter, self).__setattr__(key, value)
self.__dict__[key] = value
I like it!
- Improved (at least IMHO) transitions in multiple places
I like it!
EDIT: you have small typo in main street
No, that would make them almost impossible to defeat. Like we've agreed, all mobs were constructed based on relative strength, like a Troll might have strength of 80 and magic of 0 and Wraith magic of 90 and strength of 5 so it just takes their base stats and multiplies those preserving their strengths and weaknesses in relative proportions.Dammit, stop evading my questions :D
Dammit, stop evading my questions :D
What I mean is I have no idea what 2x multiplayer means. Or 1x multiplayer.
Is it strong, weak, etc?
it just takes their base stats and multiplies those
So an average multiplier would be x1.1 or x1.2 then, where as a boss could be x1.6 or x2 if you want them to be quite tough
.................::) :( :'(
So an average multiplier would be x1.1 or x1.2 then, where as a boss could be x1.6 or x2 if you want them to be quite tough
Depends... Hero + his crew can get pretty damn powerful, at level 50 - 60 any of them would take out a boss like that with any attack.^That's the kind of answers that I need. So, a boss for a new team should have about 2x to be strong enough, while for level team 50-60 we need, let's say, about 80-100 or something?
::) :( :'(
^That's the kind of answers that I need. So, a boss for a new team should have about 2x to be strong enough, while for level team 50-60 we need, let's say, about 80-100 or something?
Mobs don't have any caps at all, right? I mean, it is possible to use 10000000 multiple to create an unbeatable creature?
Couldn't his quicksave help you to replicate the exp bug?
Btw, you mentioned that we won't have negative stats anymore. Yet you mentioned in other post (about mobs) that we have luck from -50 to 50. I'm confused, what should I do with luck?
I see. Do they have absolute min and max? Luck and disposition, I mean.
Another thing is if I use negative luck values for mobs, won't they be even smaller with high multiple? Because multiplication rules and stuff.
What is the formula for critical hits?
if dice(10):
if (attacker.Stats.Luck >= target.Stats.Luck and dice(max(50, attacker.Stats.Luck*2))) or dice(50):
multiplier = 2.5
^I wonder if we should do something about multiplier as well in the future. I mean dependency on stats/RNG/element affinities.
Uploaded to my db new xmls for traits and items, no more negative stats there, except luck.
Gifts are done for now, 15 types should be enough for alpha. It's my db\items\gift for sprites and my db\items xmls\gifts.json for data.
Started to make Guilty Gear pack today. Will start to work with mobs sets/rewards json for arena tomorrow.
3 consumables and 1 amulet became gifts, I'm afraid I'll broke something by pushing it.
"id": "Elven_gear",Not necessarily 1 item, the number of rng rolls should depend on the number of rounds that you survived.
"items": {"Elven Sage Armor": 20, "Elven Sage Boots": 24, "Elven Sage Armbands": 25, "Elven Ranger Armor": 30, "Elven Ranger Boots": 34, "Elven Ranger Armbands": 35, "Elven Armor": 60, "Elven Boots": 64, "Elven Gloves": 65, "Elven Rapier": 75, "Elven Bow": 80, "Elven Cape": 100}
Pushed everything.
Today I created arena_rewards.json. The idea is that we have several sets of items with different probability for every single item.
Just like rmg traits/elementals. So, theoretically, you beat 100 elves at arena and got access to
Not necessarily 1 item, the number of rng rolls should depend on the number of rounds that you survived.
No-no-no. Tomorrow I'll create another json where we'll have chainfights. However, that json will be for fights only.
When I will set rewards for them, I'll use id from this json. Something like "reward: {"Elven_gear": 20}, that should mean 1 roll per 20 rounds.
What is a round then? 1 fight?
I guess I can use rgirls ids on a par with mobs ids for chainfights?
You do have a copy of a game. right? :DYup, but I have no idea what is a placeholder and what is a more or less ready content when we talking about arena :)
Also, you didn't answer the second question. I can use rgirls ids on a par with mobs ids for chainfights? There are slimes and elves, they could be used as mobs, I guess.
Race for girls, huh? I wonder about it.
Maybe just as a string, like origin field, to group them during some events or to use with relationships system between girls. There are dozens of races, we won't be able to properly code them all.
About the forth wall, guess we could add tab with all info like full name, description, race, etc. If you want to add modder and origin fields (version is an overkill, pretty sure you don't give a new version even to the game after every push), they probably should be hidden by default. For example, a small info (http://www.icondig.com/data/icons/ie_Bright/512/information_green.png) button somewhere in a corner of the tab.
What do you mean by Girls Control Screen in the to do list?
Guess we not that far from the alpha. If you write a guide about adding spells to the game, I'll try to add a couple for each element after I'll finish chainfights.
Codewise, we're very close, especially since Jaeke debugged most of the game to a great depth. We're still short on events and have almost 0 interactions. Also state of girlsmeets is unclear as I've not heard anything from Bowman for a while.Can I touch the interaction file? I really miss an option to talk with your girls that doesn't involve sex... (why do we have sex options then?)
Well, I cannot use RenPy at work because of deadly antivirus of Satan himself, also known as Kaspersky. Since it doesn't trust RenPy and checks every single file, the game's loading time is like 20 min or so (yet is does trust Kamidori, as well as any hentai VN :D ).
I'll take a look at assets file though.
Can I touch the interaction file? I really miss an option to talk with your girls that doesn't involve sex... (why do we have sex options then?)
Yup, but iirc you said yourself that documentation is pretty poor. Animation is clear enough to me, but not sure about events. Although, it can wait for post alpha.
I'll hold off on too much more testing until you get some more things implemented like that hero setup, sounds good. Well, unless there are crashes/error reports. But don't let bugs get in the way of features.
Kewl.It was you who didn't want more of them for alpha :D But this should be really easy. What do you mean by "let me know"?
I am going to use just 2 - 3 sprites for now but if anyone got any ideas for extra MC sprites, let me know. There should be a transparent png for battle and a portrait (can be cut from the battle sprite).
It was you who didn't want more of them for alpha :D But this should be really easy. What do you mean by "let me know"?
1. It would be nice to have battle pic support for MC like that we have for arena npcs
2. Maybe we could use some default sprite for any girl that doesn't have battle_sprite (some hooded character maybe)
LOL, it would take me less time to find 50 males then tag images for one girl :) I start throwing some into my DB folder. Do you have any preferences how they should look?
btw, I'll add some more arena fighters/mobs and skill animations, but I'm waiting for few more types of skills first (like healing or weakness).
I'm beginning to have some time for this again, but I also still have a lot untaged images...
Hey, you are too fast! I don't have a chance for my usual "delete and rewrite post 3 times" style in this forum :o :D
I'm not requesting anything. I still can try to write something for interaction/beach instead and I don't have productivity like you anyway
I am not really planning to add those skills for the Alpha, but we'll see. Some of those may have been coded in already.
I'm not requesting anything. I still can try to write something for interaction/beach instead and I don't have productivity like you anyway
I didn't want to have a mc setup screen period, but I believe Dark said we should at least make a simple one.It's called roleplaying ;)
Find one, it wouldn't be that hard to code in BUT it may be a better bet to disable girls without battle sprites from becoming warriors.I'd prefer to disable them. But others may disagree with that. Also, crazy's packs don't have sprites at all. Guess we need both options just in case.
Some beginnings of MC setup screen, I've also got my hands on some new fonts:I wonder if you could tie fonts with characters. That crystal.ttf would look perfect with impersonal artificial girls :)
I'd prefer to disable them.
I wonder if you could tie fonts with characters. That crystal.ttf would look perfect with impersonal artificial girls :)
Just finished a simple chainfight json, should be enough for alpha. Uploading here for now, forgot my flash card today :)
Of course, I cannot balance it properly until it will be loaded in the game.
I don't want to give gold here, that is what brothels for. Not to mention that you can sell items if you need gold that badly.
Maybe fame?
Ah, I see. This is sets of rewards from arena_rewards.json that I pushed recently.
I think we shouldn't. An event is a good idea, maybe something related to your girls, like if you have high disposition with fire girl, you both could go for a quest, and after that MC will have fire as well.
Maybe it even could be changed unlimited number of times, but the quest should be difficult enough.
While I have some good icons for spell books and scrolls, the current item system doesn't support it I'm not mistaken.
Although, we could handle it another way: you could find a spell book, but you need to bring it to a Mage Guild to learn the spell.
? I thought we had that from the very first concept of items system?Well, if spells are count as skills, then yes. I thought it is another class or something.
There are plenty of ways to go here actually... gain new spells according to your alignment with levels or the scrolls or the guild or asking girls/NPC to teach you and so on.Hm, I wonder how difficult it would be to code if we assume that fire 3 MC could read any fire scrolls, but he needs a girl with lvl2 darkness to learn a lvl2 darkness spell from a scroll.
Moreover, we have 3 levels of alignment. So if you want lvl 3 fire, you need to do the quest with 3 different fire girls.
Well, if spells are count as skills, then yes. I thought it is another class or something.
Hm, I wonder how difficult it would be to code if we assume that fire 3 MC could read any fire scrolls, but he needs a girl with lvl2 darkness to learn a lvl2 darkness spell from a scroll.
Yup, we need 3 levels for both affinity and spells then.
Maybe spells also should have requirements to magic and/or intelligence, for both girl and MC if we talking about joint study.
Post alpha, no need to delay alpha only to add something not from the to do list.
Those divine warriors though, I'm hitting for only 40 damage with 1000 attack skill ???
What do "reward": {"Ninja_gear": 1, "Cons_common": 2}You should get 1 random item from Ninja_gear set and 2 random items from Cons_common set.
1 and 2 mean here? I cannot find your explanation in the posts
You should get 1 random item from Ninja_gear set and 2 random items from Cons_common set.
Omg, that intro and the skyrim sound for warrior, lol :D
Well, sci-fi is always welcomed (a new map for the city ftw (http://fc04.deviantart.net/fs7/i/2005/208/f/f/Askey_City__Helios_by_strangelet.jpg)).
I'll try to adjust mobs strength and rewards for chainfights tonight or tomorrow.
I could use a console command to change MC level for testing.
buff_mc(5)
I am going to use just 2 - 3 sprites for now but if anyone got any ideas for extra MC sprites, let me know. There should be a transparent png for battle and a portrait (can be cut from the battle sprite).Pushed a few, If you like it, I'll add more.
Pushed a few, If you like it, I'll add more.
Why is there a girl in between? ??? ?I'm doing my best to restrain my imagination :D
They're great! Why is there a girl in between? ??? ?It's a trap! ;D
Do we actually need more?
----------------
I'm going to create another arena team, it's really fun to do it as a break from taging :)
It's a trap! ;D
I'm afraid we'll need gun and machine gun attacks for some characters due to their battle sprites. They don't have to be more powerful, I mean sounds and stuff.
Well, if a battle sprite has a sword, I figured that the character should have a sword attack by default, providing that she doesn't have any weapon equipped. We have that bskill field in our data files after all.
And Tayuya uses summons and genjutsu mostly, so maybe she shouldn't have melee attacks without equipped weapons at all?
There should be options in items. Something like mskills or magic_skills and bskills or battle_skills. I need to take a look at the code.According to our own Items Concept thread, items only have addskill/removeskill fields.
Why do we need bskill field then?
According to our own Items Concept thread, items only have addskill/removeskill fields.
Kewl, I'll make sure that you can push any kind of stats with the next push. Right now Arena characters come off a bit weak and have a very low hardcap. You can do that with pure experience as well right now.I haven't played the game in months (if ever) so I have no idea about the balance :) . I've just copied the values for "Randalf" and adjusted them a little.
PS: Arena Character are not mobs so you should specify the exact strength you wish them to have instead of relative strength as percentage.
I haven't played the game in months (if ever) so I have no idea about the balance :) . I've just copied the values for "Randalf" and adjusted them a little.
also I didn't pay attention to it, because without more skill types, new teams are just different pictures atm...
May I suggest creating a possibility to add customized pre-match and aftermatch events for teams? Something like adding a field in arena_teams.json with name of label the game will jump to? (Or automatic team name label like in GM) For stuff like different taunt line, team pic, different music, first introduction event or to set flags for quests (=team XY defeated).
Also, it is possible to set affinities for NPC arena fighters?
Sure, why not. Will make more sense to add even more MC sprites to the game.
Lets do the Arena enchantments post Alpha, we have a lot of working systems that still are very low on content, why add another.I actually just planned to place one pre-match image :) So it can definitely wait.
I just pushed few sprites, so if you are doing this now, I hope they won't cause troubles.
I'll see if I can do this tonight, it may get tricky. Should we simply specify folders for the ArenaFighter like for MC sprites and use the same filenames? It'll make my job easier and improve future modding... yeap we should do this :)
That will also mean that there we will be able to use more images, right? Then I'm all for it.
I hope they won't cause troubles.
No trouble. Note that Name in the json file and Folder you put the girl in MUST be named the same. Arena looks a bit more lively. I'll reduce number of random girls a bit so AFs get a chance. Also I've killed my Z and Rudolf (forgetting that Z served as an example of random arena fighter...). It can be found in mercurials history I think.I don't really understand how Z was supposed to work. If I set unique: false, then that warrior is participating outside of the team on his own, but there is still only 1 of him. So they can't make arena work without Rgirls.
I don't really understand how Z was supposed to work. If I set unique: false, then that warrior is participating outside of the team on his own, but there is still only 1 of him. So they can't make arena work without Rgirls.
I managed to find portrait for our brave starting warrior, but there doesn't seems to be any usable battle images for his red outfit :(
They in theory could, they just don't. If you set unique to false, there will be two of them, one in the teams and another one free to do as he/she likes (so could join a team, go solo or both.)Thanks for clearing that out.
Actually you were the one who asked me to add that saying that you'd like to see bleach girl supported by two shinigami for example. If you set shinigamis to false, you can use them unlimited amount of times. If you set them to true and try to use them twice, game will throw an error.
Thanks for clearing that out.
Yes, I did, but I decided not to make a Bleach pack in the end... but most importantly, using girlpack girls in teams is giving errors when you don't have that girlpack present in game.
You thinks it would be better to prevent team build-up and write to log? I thought about that when making the Arena... Seemed like Errors would make debugging easier.I don't think I understand...
I don't think I understand...
I just know that there already was someone who couldn't run the arena because of missing Tsunade, so we should probably do something with that for alpha to prevent confusions like that... probably just remove these teams for now, because you already answered me that improving modeabillity of arena is something for post-alpha or further.
Btw, how did you code multiplier? Do you figured out that that "multiplier": [1, 0.2, 0.7] means 1x for the first mob, +0.2x more to every following one and +0.7x more to the boss?
...
Not sure if I understand - you just simply want 200 more pixels of sand? If yes, then it's on DB but... not sure what you want strange size like this for.
Done with chainfights and pushed. You can beat goblins for warrior at lvl 1 with some basic equipment, but you need very good items to beat slimes even at 250+ lvl. And you will get very nice items for those slimes, best equipable items in the game, basically.
Many items cannot be obtained via arena (gowns, for example). I decided to not use misc items as well, they are too valuable to freely give them away.
I am going to see if I can load the animated bg into arena. Ended up improving some minor stuff instead of working on interactions, that code is really old so I need to kick myself in the butt in order to start working on that.What are you planning to do with interactions?
Took me a couple of minutes to find hero profile screen. And I still cannot find schools :D
What are you planning to do with interactions?
I am planning to allow customized labels just like with girlsmeets, add more texts and checks (free/slave/disposition/stats). Basically just make them work for us, I don't have anything planned that we haven't discussed before.Ok, thanks. I wasn't sure what was planned for alpha and what isn't.
===========================How can this take 3 seconds? Are you following the order of frames Xipomus provided?
Some parts of PyTFalls moddability are getting ridiculous. Took me 3 seconds to create animation from those backgrounds and load it into the game... looks really good as well!
Ok, thanks. I wasn't sure what was planned for alpha and what isn't.
Are you following the order of frames Xipomus provided?
How can this take 3 seconds?
Dammit, how to get access to schools? I only see them in girls filters, that's all.
screen pyt_girl_interactions:
use pyt_top_stripe(True)
fixed:
style_group "interactions"
align (0, 0)
frame:
pos (10, 50)
add(ginterimg) align(0.5, 0.5)
frame:
pos (1000, 50)
vbox:
spacing 3
text('{size=+3}Talk') xalign 0.5
textbutton "Chat" action Return(['act', 'chat'])
textbutton "Praise" action Return(['act', 'praise'])
textbutton "Scold" action Return(['act', 'scold'])
null height 5
text('{size=+3}Sex') xalign 0.5
textbutton "Fuck" action Return(['act', 'fuck'])
textbutton "Anal" action Return(['act', 'anal'])
textbutton "Blowjob" action Return(['act', 'blowjob'])
textbutton "Lesbo action" action Return(['act', 'lesbo'])
null height 5
text('{size=+3}Go Out') xalign 0.5
textbutton "Date" action Return(['act', 'date'])
textbutton "Entertainment" action Return(['act', 'entertainment'])
textbutton "Shopping" action Return(['act', 'shopping'])
textbutton "Other" action Return(['act', 'other'])
Xela, slave market mistress and queen's blade pack... ::)
What is the "other" interaction? A placeholder, or you actually have some ideas?
BTW: What population should PyTFall have? How many people?The city picture is small. And technologies/magic seem pretty weak for now. It may be a big city compared to others, but I doubt there could live more than 50000 with the current concept, as I see it in your background pictures with minor traces of progress.
1) We do need a decent name for currency, not gil though, it's too known.
2) Let's see, according to xmls the cheapest delicacy (cake) cost 10 coins. I guess a simple meal should be about 5?
A simple dagger cost 50 coins. Seems pretty similar to prices ratios in my local store, if by dagger we mean a good kitchen knife :)
Blowjob... If we talking about a noob whore, maybe 5-15 depending on looks?
The city picture is small. And technologies/magic seem pretty weak for now. It may be a big city compared to others, but I doubt there could live more than 50000 with the current concept, as I see it in your background pictures with minor traces of progress.
Couple of questions:
1) Should we change the name of the currency? Gold seems to simple... maybe Gil or something like that?
2) What should it be worth? Lets try to convert a price of a normal meal into the currency, simple dagger, blowjob and so on.
3) Any other thoughts/ideas?
====
I am trying to get my head wrapped around a concept of balancing and maybe simulating basic economy...
BTW: What population should PyTFall have? How many people?
2) Let's see, according to xmls the cheapest delicacy (cake) cost 10 coins. I guess a simple meal should be about 5?
A simple dagger cost 50 coins. Seems pretty similar to prices ratios in my local store, if by dagger we mean a good kitchen knife :)
Blowjob... If we talking about a noob whore, maybe 5-15 depending on looks?
Aren't there supposed to be different tiers of people? beggars, commoners, journeymen, smithys, farmers, tailors, carpenters, clockmakers, laborers, merchants, law enforcement, businessmen, artisans, lawyers, politicians, judges, nobles, and royalty? (I missed a lot, but you get the point)
Well, I personally like credits, it is widely used, but normally it's for futuristic sci-fi type stuff. Gil is a final fantasy one, but people recognize it as a fantasy currency. If you want to be different but still not come up with some random terms, you can use shapes or types ( 'bars', 'cubes', 'hexes') you can use precious metals or gems (copper, bronze, silver, platnum, etc). Or you can always just call it 'coin'. but that might be too simple.
By simulating an economy are talking about fluctuating prices and a changing population based on the wealth and success of the city itself? Ooooh, does that mean we can take over the city itself .... yes .... yes, excellent. Change the laws, makes all the womens slaves. <insert evil laugh here>
But seriously, don't make too much work.
Interactions are not in a very good shape, code itself is poorly designed poorly, there is very little decent content and it's so old that hero is still not silences and has his own lines. I'll do some minor editing like deleting all of heroes lines and maybe change the way pictures are handled. OW has a couple of lines we might use as well, but I don't wanna touch that until I get some decent project time on a clear head.
For interaction I was thinking that:
I would like to have talk option that is just talk
I think that girls which are not prostitutes should only have sex with you on higher disposition
images for sex acts should have "partner hidden" tag
Interaction should consume AP for both you and the girl
Maybe we could have something like "rest and preserve strength for next day" to increase girl's AP for next day
lots of stuff to do at the dates
But I always ended giving it up because it turned out to be too hard for me codewise or, much more often, I got stuck with grammar or I was otherwise unsure how to say something in english.
Is there an external file that's going to contain (or is already containing) text for interactions and other things? Or is everything going to be "hard coded" into the script files?
Basically, how mod-able is this text going to be
Second, are the interactions meant to be generic? Or are they (can they) be specific to unique girls? (yes I know that would probably take more writing)
I guess this question is more about, what variables are taken into account during an action. Is it just the disposition bar, just like it is in sim broth? Or are there more variables?
@xela about those links. So does that mean this is officially in a medieval time period? I was under the impression that it was 'all-in-one' type of thing
Man... what the hell CW? That was a good post!Sorry... I did it again... but thanks for answer, helped me a bit :)
I don't think we need dates anytime soon. We have no real reward or reason for being nice to your girls in the game yet, so while it would look nice to have some options there, the actual gameplay value would be very low atm.
@Dark, are knives really 50 ? O.o. Can't you get a 5 or 6 set for like 25 -30? it's all good.Nah, I mean high quality knives, they cannot be that cheap. And I guess even a simple combat dagger should not be worse than that.
If there are this many types of people .... isn't this city a massive trade city / metropolis? With probably +3 million citizens (not including illegals/slaves). Where you can essentially never see the same customer twice and still make a profit?Ancient Rome at some point had about 7 million free citizen.
Still, the setting is without trains and spaceships (at least so far)I wonder. We have magic and androids, it should have some self-propelled transport at least .
I wonder. We have magic and androids, it should have some self-propelled transport at least .
Since "events" occur after wm with its multidimensional catacombs, all those androids, demons and stuff (and their knowledge) have been known for some time.
What the:
"Whore? WTF?? I am a Fancy Girl!!!!"
"And there were 'whores' :)"
reports are supposed to mean? ???
And here I thought it was an easter egg of some kind ::)
Finished Guilty Gear pack today, next is Soul Calibur. Also I'll see if I can find more animations for spells.
Tried pushing an update. Let me know if it went through.
I originally modified my post in the other thread, then it occurred to me, that might not show up as a 'new post'.
Bah.
oh ... I got an error 403 forbidden. hmmTook me quite a while to figure this one too :) You need to push through Read/Write access you get after registering (ssh:), not the read only one we have listed here on forum (http:). I have found mine there:
Took me quite a while to figure this one too :) You need to push through Read/Write access you get after registering (ssh:), not the read only one we have listed here on forum (http:). I have found mine there:
https://sourceforge.net/p/sb-pytfall/code/ci/default/tree/ (https://sourceforge.net/p/sb-pytfall/code/ci/default/tree/)
Ah, I see. It appears as though I still do not have access then.
I have access to RO (read only) and http. and both of them are the same link. There's no ssh option for me.
In my case it's ssh://[email protected]/p/sb-pytfall/code string, where darktl is my login on sourceforge.
You could try to set it manually in workbench settings.
Although, on sourceforge I see "Brought to you by: cherrywood, darktl, xela00" line. Xela, are you sure he has dev rights?
Although, on sourceforge I see "Brought to you by: cherrywood, darktl, xela00" line. Xela, are you sure he has dev rights?
Ok, I did change it to ssh://[email protected]/p/sb-pytfall/code
then it'll ask for my password, and then I get permission denied lol.
I also saw only those 3 names. Which is why I suspect I'm not allowed as of yet.
______________
Blarg, I wish I knew what I was doing wrong. I'm not familiar enough with merc or sf to know if I've got something messed up or not.
Iirc, it takes time for sourceforge to update its database, I read something like that in their faq.
http://i155.photobucket.com/albums/s282/superhbob/s1.jpg
http://i155.photobucket.com/albums/s282/superhbob/s2.jpg
http://i155.photobucket.com/albums/s282/superhbob/s3.jpg
http://i155.photobucket.com/albums/s282/superhbob/s4.jpg
http://i155.photobucket.com/albums/s282/superhbob/s5.jpg
I'm re-cloning the whole thing. bah
def start_battle(player_team, enemy_team, music=None, background=None, pt_ai=False):
'''
Bridge to battle engine, idea is to try and make it as easy as possible.
player_team/enemy_team: iterables
music: path to a music file
background: Displayable
pt_ai: if AI Fighter is required on player team, should be a list of booleans of same length as player_team (True for AI, False for Player control)
'''
$ r = start_battle([hero], [copy.deepcopy(choice(pytfall.mobs.values()))], background="bg battle_forest_1")
Well, I still don't see Armegetton among that "Brought to you by" list. Shouldn't everyone with dev rights be there?
No worries though. I don't like stress. If I can't manage to get it working, I can just post or pm an update here, there or somewhere else. I'll keep an eye on the workbench updates to make sure I'm not over writing someone else's stuff as well. and when I get a good chuck of something done, maybe I'll post on weekends. It's still undecided.
oh, speaking of random silliness. I know I could always use the shift-o to change things, but I changed my code so that drugging a girl turns them into your slave. I also added a class change thing in the girl interactions, just to see if I could and if it would work.
turns out slaves aren't allowed to be guards? I'm not sure why though .... hmm. weird. Speaking of this, are there plans (albeit, probably more complicated or involved) to have class changes? I do know that wm had that dungeon where you could make girls into slaves. Are there similar plans? I think I should probably move that code into a separate file so it doesn't mess up the updates .... yeah.
Which part of the pushing process are you having trouble with?
I had some trouble because I was using the wrong address to push to. On SF, in the pytfall code read/write(RW) part remove the extra sb-pytfall-code at the end and use that.
Which part of the pushing process are you having trouble with?
I had some trouble because I was using the wrong address to push to. On SF, in the pytfall code read/write(RW) part remove the extra sb-pytfall-code at the end and use that.
Ok, I did change it to ssh://[email protected]/p/sb-pytfall/codeThat's not right. I took a look at your profile, your actual login is 4540034, while Armegetton is just user name.
then it'll ask for my password, and then I get permission denied lol.
That's not right. I took a look at your profile, your actual login is 4540034, while Armegetton is just user name.
Maybe either you or Xela did a mistake of some kind after all during registration, since you are the only one who have a numeric login. Maybe not though.
...
@Xela: How should I code a proper fatigue check in girlinteraction.rpy that takes girls max values into account? I wanted to add that girl will fall asleep during conversation it if she is too exhausted
also, I used $chr.disposition += 1 and not $chr.mod (disposition, 1) everywhere in girlmeets, what is the difference and shoul i correct it?
There is no reason to correct this other than making the code look better.
Hahahahaha. well, hopefully this solves the problem and the mystery that was my pushing issues. Oh man. that's rich.
if chr.has_image("deepthroat")
to look for one image with more tags? thanks
now another question: how to use thisCode: [Select]if chr.has_image("deepthroat")
to look for one image with more tags?
what i want to do is for example display (profile + sad) image but if there is not one (profile + uncertain) image instead
Well, if it does, it's a SF bug. What would be the bloody point in adding anyone using their ids if they cannot use their rights, either block adding people through ID or properly add them based on correct IDs.
Why f#ck with people instead? :-[
Kinda dumb that sf is being retarded like that though.... so .... what's the point of the user ID then? .... lol. whatever
- pushed a very small addition to interaction (it's just me playing with something more than seriously adding content)
$int_show("profile", "angry", exclude=["nude","bikini","swimsuit","exposed","beach"], type="first_default")
Profile is always the default (unless an actual default has been specified), it doesn't do do any damage to the game at all. I am just making sure we're all at the same page.??? Thanks a lot. I somewhat managed to totally forget that there is also a "normal" behavior...
No idea why do they need user id at all, however when you try to add someone, it says "enter username". Nothing about id.
I have a theory that you have to use ssh key if you registered via id.
Strange, I can't find any mention of id in the sourceforge documentation.
I'll try to figure magic at this weekend. As for soundtracks, here we go (http://animeost.info/15493/kamidori-alchemy-meister-sound-collection).
It's up to you whether to add them or not to the repository. I know I will add them to my copy of the game when it will be ready :)
I can't possibly be specific enough until you push your mp3s. I created music folder in my db, you can find some tracks there that are not overused in the source game.
Looks like so far we only have projective and instant magic. I've been thinking about rays of some kind, when the continuous beam shoots to the enemy.
SF Updated:...
much nice. many ambiance. very mood
wowe
"Tab characters are not alowed in renpy scripts". Since when proper code formatting is forbidden? :(
How to add magic skills to mc?
I have strange results. I pushed darkness spell, mc already has it, but I have no idea what is wrong with animation.
I read about anim.filmstrip function, it supposed to work this way, but it doesn't.
Huh, I resized it to 1000/1500, but instead it became 1500x1500, and I didn't notice it ::)
Where did you take that "good luck" sound from? When I hear it brings to mind the expression "go full retarded" from some gaming community ::)
Why MC cannot sell items back to merchants? Or rather, why do they refuse to buy it back?
I'm not sure about the idea that party members should move and act independently. And I'm not sure about several exploring parties at the same time as well.
What kind of BE do you want to use in dungeons? I suppose we won't use our current BE, since party members are divided?
If you can find something better suited, be my guest. I think it was called something like Ironic Cartoon Voice on SD.How about this (https://www.dropbox.com/s/e2bi6v2l5lu7q53/Heroes%20Opening%20Credits..mp3) one (with better quality)? :)
(oh, we can load hex-tiles, 3Dtiles and maybe some other formats, this was just already in Tiled).3Dtiles without an artist? Is it even possible?
I like Alkion's style a lot but with magic and attack "on the ground", instead of a separate animation screenEven though it is practically the Kamidori BE, I kinda dislike separating characters in our case. Maybe a small teams instead, like 2-3 groups with 2-3 members each...
How about this (https://www.dropbox.com/s/e2bi6v2l5lu7q53/Heroes%20Opening%20Credits..mp3) one (with better quality)? :)
Even though it is practically the Kamidori BE, I kinda dislike separating characters in our case. Maybe a small teams instead, like 2-3 groups with 2-3 members each...
Those maps are way too bright btw. I wanna dark, grim and dangerous dungeons.
p.s. it's difficult to tear your eyes from that bleach dance in options menu ::)
3Dtiles without an artist? Is it even possible?
That would not allow on the map combat... might be easier to code though! We don't have to make the decision right now or we can do it both ways depending on the location.Not necessarily. For example, one character for close and one for ranged combat, or one fighter and one mage, etc.
Nice, but this one is bit too long.Well, you don't have to wait until it stops before loading the brothel screen screen. High quality version (https://www.dropbox.com/s/durv75q3hx8foe5/heroes_theme.mp3).
p.s. it's difficult to tear your eyes from that bleach dance in options menu ::)
Oh, maybe can we get the ending credits dance from Highschool DxD? In some screen as well?
They look like dis:
http://cybersteelex.blogspot.com/2012/02/high-school-dxd-gif-collection.html
Ending credits? What are you going to write there? We are a small team with short usernames :)
There are plenty of things in the to do list, including NPCs (queen's blade mistress...).
Actually, what will happen to the arena and all BE content after you will add Alkion's EE/BE?
Where did all the writers go to? At this point Girlsmeets/Interaction texts are like 90% of the remaining workload for the @, I've done all I could with the code save a major review. Get working (sound of a whip)!
Put something in about her being a clone, a sister, add an event to trigger if player enters with QB girl on his team into slavemarket?Actually, a clone will be a good easter egg, if you haven't abandoned the idea of cloning.
Actually, a clone will be a good easter egg, if you haven't abandoned the idea of cloning.
I could make Irma (that's the character name) a slave. And after MC will see her among other slaves, there will be a new line in the dialogue with Blue or something.
While running game code:
File "game/script.rpy", line 85, in script
File "game/script.rpy", line 160, in python
File "game/library/classes - tags.rpy", line 32, in python
TypeError: list indices must be integers, not unicode
I wanted to check out the progress you guys made yesterday, only to find out that I get errors over errors, so I stopped yesterday.
The most recent revision I get is 172, and produces the following error when run in the most recent version of Ren'Py trying to start a game:Code: [Select]While running game code:
File "game/script.rpy", line 85, in script
File "game/script.rpy", line 160, in python
File "game/library/classes - tags.rpy", line 32, in python
TypeError: list indices must be integers, not unicode
I will try taking a look at the interactions anyway later today but I need to finish some other stuff before I have time for that today.
On a sidenote I found it a bit annoying to get the game to start as I had to figure out the folder structure for the chars and rchars with the error messages, maybe keeping default folders in the repository would make it a tad easier to start people off with the project.
You should update your renpy to prerelease version for a start to have much less errors :D
I am not 100% sure how to add folders to the mercurial depo and then exclude everything inside themRepositories usually don't allow empty folders at all. Although, you can use empty files as placeholders.
Odd error, you may have put the girls directly in char/rchar folders. I am not 100% sure how to add folders to the mercurial depo and then exclude everything inside them, I just know how to exclude a folder from it completely but following a structure of:
content/chars/Naruto/Hinata
content/rchars/elf_girls/Rena_Elsword
Making it even easier for the dev team might be very time consuming... Once you get folder structure right, make sure that you have Persona and Naruto packs and at least one random girl. If you cannot find those for some reason, PM me, Dark or CW.
Maybe add that to the repository post so that it is easy to find.
Got it running now after recloning the entire thing, but I am running too low on free time to start looking into it.
Might I suggest that future girlspacks include .xml's and .json's in their folder structure? Also unless I am overlooking something there is no indication what under folder specific rgirls are supposed to go.
MEGA Claim of Alleged Infringement / TakedownYou mean your account or someone's else? Guess it's about time to use password protected archives with meaningless names.
You mean your account or someone's else? Guess it's about time to use password protected archives with meaningless names.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/pyt - screens - nextday.rpy", line 10, in script
File "game/library/screens/pyt - screens - nextday.rpy", line 109, in python
File "game/library/classes - support.rpy", line 86, in python
File "game/library/classes - arena and exploration.rpy", line 2051, in python
File "game/library/classes - arena and exploration.rpy", line 694, in python
AttributeError: 'NoneType' object has no attribute 'fighting_days'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "E:\Games\renpy-6.17.0-sdk\renpy\execution.py", line 294, in run
node.execute()
File "E:\Games\renpy-6.17.0-sdk\renpy\ast.py", line 732, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\Games\renpy-6.17.0-sdk\renpy\python.py", line 1358, in py_exec_bytecode
exec bytecode in globals, locals
File "game/library/screens/pyt - screens - nextday.rpy", line 109, in <module>
pytfall.next_day()
File "game/library/classes - support.rpy", line 86, in next_day
self.arena.next_day()
File "game/library/classes - arena and exploration.rpy", line 2051, in next_day
self.update_matches()
File "game/library/classes - arena and exploration.rpy", line 694, in update_matches
elif setup[2] not in team.leader.fighting_days and team.leader not in self.get_matches_fighters(matches="1v1"):
AttributeError: 'NoneType' object has no attribute 'fighting_days'
Windows-7-6.1.7601-SP1
Ren'Py 6.17.3.327
PytFall 0.38
This usually means game didn't found any random girls to fill the arena with fighters. Either you don't have them or you placed them wrong. It's explained on previous page...
Does anyone happen to know what this error is about?
It seems to prevent me from going on to the next day.
Guess I'll try to write texts for gifts if you give me format.
How about adding race string field to girls data files for the alpha? Even if we don't use it for now, we will anyway.
Also, we have to do something about initial stats in data files. Since we have normalization, I even not sure if we need them in their current form.
Take a look at the pyt - labels - girlsmeets.rpy file, preferably in JEdit (can be downloaded in Ren'Py launcher and has it's syntax highlighting)Um, I'm just not sure if I need to create a new file or use some existing one.
You were the one against it if I recall correctly? I support the idea 100%.Nope, as long as it is a simple string without restrictions. At the worst, we could use a normalization of some kind for it in the future.
Normalization simply caps them, there is still a range that can put a good difference between fighter and service girl... Alkions approach is to do away with starting stats all together, we can take that direction as well but I am not sure it's the best one.If you want a difference between classes, different initial bonuses for different occupations can be hardcoded.
Um, I'm just not sure if I need to create a new file or use some existing one.
Maybe we should use not absolute values in data files, but relative ones. It will be much more easy for pack makers, including me, instead of having to remember about caps all the time. Like, charisma 30 for lvl 1 girl should mean 30% of max possible charisma at lvl 1.
Also, it would be better to use level field instead of exp for the very same reason. The game can calculate required exp by itself, why it have to be me? :)
We also could use health stat, for example if character will be injured (or dead?) when you find her, so you have to heal/resurrect/clone her. Although, maybe it will be easier to implement with scripts.
We probably don't need famous trait after all. I never used it (including wm ex packs), and we have reputation stat anyway.
It doesn't do any harm even if it stays, does it?Fair enough.
I found ost from ar tonelico (two first parts are basically music orientated games, so sounds are very decent). Will try to find something good for every location.
My db\music, all tracks are named according to locations.
Ok, I uploaded there more neutral tracks for city (city (1) and (2)). You could use depressing ones for slave market, I guess :)
Fight (1) probably. It uses short version without vocals in the source game, didn't notice that.
Yeah, we shouldn't change tracks too often. But space adventures track in the main menu is a mockery on the game, please change it to city/general city at least.
:( I really like that one...It's not too late to change setting to something like this (http://artonelico.wikia.com/wiki/Ar_tonelico:_Melody_of_Elemia) or that (http://en.wikipedia.org/wiki/Phantasy_Star_III:_Generations_of_Doom). Sci-fi music = sci-fi plot 8)
It's not too late to change setting to something like this (http://artonelico.wikia.com/wiki/Ar_tonelico:_Melody_of_Elemia) or that (http://en.wikipedia.org/wiki/Phantasy_Star_III:_Generations_of_Doom). Sci-fi music = sci-fi plot 8)
Ah yeah I see the "placeholder for interactions with being asked to be a friend blah blah" stuff. I found the traits xhtml file; do most traits need a text? Or only more major traits like personality traits (ex. mind fucked, tsundere, tomboy, mature, etc.).
Also, lol, sorry to bombard you with all these questions, but I just want to make sure I don't mess anything up.
Okay, I had a feeling it had to do with that tortoise thing and the repository lol. Though, yeah, maybe I should just upload it and have someone else push it since I dunno how to push.
Is it possible for us to compress any game content into archives? I read about .rpa archives used by renpy.
Right now my copy of the game has about 18000 files, about 15000 of them are in content folder. Quite messy for prealpha, I think, since there will be more. Besides, if rpa supports password protection, it will be an excellent tool vs copyright for packs.
We don't have to compress them, just archive.
3) If we released something and there is a bug in it, we'd have to update entire archive related to it instead of just one file.That's what pro game devs do all the time :D
I don't want to add logic to girlsmeets/interactions before new crew had some chance to catch up with HG and the code.Not sure what you can do at this point from the to do list... Either improve EE or join me in spells/girls packs making :)
Not sure what you can do at this point from the to do list... Either improve EE or join me in spells/girls packs making :)
We discussed magic system, it's scrolls/MC affinity/girls with the right affinity for other elements. And requirements for spells, both magic and intelligence.
We even have a witch who could sell them until we'll have EE as the main source.
As for the event, that was a shocking experience, but at least it is fun when you tell him to f#ck off :D
What I don't understand is why do you use cartoon low quality sprite while there are tons of pretty and cool characters (http://art.ngfiles.com/images/201/theshadling_death.jpg) out there ::)
Are the girls going to have in game locations that they like?Yup, they are based on girls traits. Not sure where the code is located, better ask Xela.
Yup, they are based on girls traits. Not sure where the code is located, better ask Xela.
As for shopping, some items have goodtrait and badtrait fields, they serve for autobuying system for now, but might as well be used for dialogues.
Wait a sec, we decided to use a separate class of items as gifts during meetings, it's in gifts.json. There you could use simple checks to determine responses, specifically how much disposition changed after the gift.
You also could create another json file and set there favored items depending on traits/occupation if you want to, and use it in some responses then. But to add it in the character class as an overkill, I think. Traits are designed to make every character more or less unique, no need to make them even more unique.
jk, I'm looking at the json gifts file. What do all these numbers mean? Like chance, dismod, cblock, also what is the number next to the traits?
"Egocentric": 40, is this over writing the normal dismod number? How is it used?
And finally, how would I direct the code to check any of these things?
There is a long explanation of concept on items in the game design section but it's only partially applicable to gifts.
To answer your question:
chance: Chance for an item to appear in shop on restocking day. 100% is maximum (available at all times).
dismod: Disposition Modifier. Value to be added to disposition if given to a girl during girlsmeets.
cblock: Non-applicable, at least at the moment, not entirely sure what Dark wanted to use it for in this context but it is currently ignored by the code.
Number next to traits is additional modifier, will also be added to disposition but only if girl has such a trait.
Depends on what you want to do... either tell me what you need or just leave comments near your texts giving me instruction. I'll take care of coding after I pull your new texts.
Ok, so if
"dismod": 30,
"Egocentric": 40
then the girl will get +70 disposition?
Looks like the rest doesn't really matter for girlsmeets.
Yeap, that's about it...
Oh... there is also "occupation" fields. Like items that only a Warrior/Prostitute/Stripper/ServiceGirl might find useful.
Yeap, that's about it...Nope. It should be 40 instead of 30. And, as correctly noted Armegetton, it obviously should be 0 instead of 15 for Wild Flowers in case of Impersonal.
Nope. It should be 40 instead of 30. And, as correctly noted Armegetton, it obviously should be 0 instead of 15 for Wild Flowers in case of Impersonal.
Good to know. I'm working through it currently.
Also, is there a purpose in the duplicate item at the bottom? Just wondering.
EE
girlsmeets update.
clever compliments (general) added
(general) gifting for bad, good, and perfect gifts added.
All still needs updated logic for disposition changes.
Last we discussed this, we've also agreed to introduce something like this post 1.0?No idea, I recall you mentioned a dungeon as an easter egg for the alpha.
Any new thoughts/ideas/questions?Fix gifts for a start according to my explanation? :D
Ok, I changed leprechaun sprite to leprechaun girl, I can tell you that the event is much less painful for my eyes now. And deleted duplicate item from gifts.
Fix gifts for a start according to my explanation? :D
Nope. It should be 40 instead of 30. And, as correctly noted Armegetton, it obviously should be 0 instead of 15 for Wild Flowers in case of Impersonal.
Lol, at the previous page.
Ok, I'll take a look at that now. Percentages are prolly ready... There is no way of telling for sure since traits are messing stuff up and I don't feel like creating dummies for testing. At least nothing is crashing.
I like that asshole... She can be his sister or something like that in the future.That's a problem, it's not easy to find a not ugly male leprechaun picture. This (http://www.wired.com/geekmom/wp-content/uploads/2011/03/leprechaun1-224x300.jpg) one seems too nice, this (http://wallcapture.com/wp-content/uploads/2013/03/Leprechaun-Wallpapaer-791x1024.jpg) one somehow remindes me of trollface, this (http://fantast.in.ua/uploads/posts/2013-01/1357922530_11.jpg) will not be easy to rip...
so if girls has a matching trait, dismod should be ignored instead of having a stacking effect?Yup. It's more convenient to create gifts this way, instead of manual calculations you just set the outcome.
What about occupation field? Should it stack with traits bonuses?Yup, like warrior (+30) and Iron Will (-40) should give -10 total.
May I ask for explanation how to use this (=what to write in girl file) ? I love the idea, wanna try that, but I know virtually nothing about what that really means or how skill caps work.I dislike when you have to remember about some limitations all the time. We have hardcoded min and max values for stats, so if you write charisma 10000 for lvl 1 girl in data file, the game will rewrite it anyway. So instead I decided to use relative values.
Do you guys have any good source or method for creating girls descriptions in data.xml? I'm usually trying to stick it up from various wikisI use wikis as well, usually I just find a couple of lines briefly describing the girl and copy them :)
thanks
I mean, after that Miku in main menu and especially if a cosplayer of Misa Amane can make it into the game as a beggar... (seriously ::) ) I'm kinda surprised something like this can cause any objections :)
The cosplayer gotta go... longint said something about grabbing first pic he could find for a placeholder. See if you can find a better beggar? + You know how to replace sprites yourself.
What's the problem with Miku girl by the way? I know nothing about her but her dance in gif seemed useful for main-menu... I also think that Rukia/Orichime in the options look really well.
Just for the record, I've said it before... if anyone has any ideas for interface/menus/sprites and etc, let me know. Last option for leprechaun is not bad by the way but just like CW, I cannot understand Dark's issue with the current one.Too cartoonish. All those high quality backgrounds and girls, then bam - low quality sprite. It hurts me aesthetically.
I started to talk about EE/BE because even if we decide to put it in after 1.0, having some form of endgoal now would be of a great help to meHard to say. As much as I like our forest (easy to make too), the number of forest backgrounds is limited enough (unless we'll use real ones).
Do we really need initial stats settings for MC? I'd prefer to chose class (in the future some facts from prehistory as well).
As much as I like our forest (easy to make too), the number of forest backgrounds is limited enough (unless we'll use real ones).
Alkion version = Kamidori. Not too original, but clean concept.
Your version is basically a trpg, for example like Final Fantasy Tactic Advance or Fire Emblem.
I guess we'll use tiles for EE in one way or another anyway.
As for BE, if we'll use your/Alkion approach, shouldn't we teach AI how to move on the map, avoid obstacles, approach at the correct distance? Whether there are ready-made algorithms, or it means 2 additional years of coding? :)
Well, we don't have to choose something one. Originally we were going to use simple tilesets together with VN forest.
Thus, we could use VN functionality and tile software.
Even if we use tilesets, we'll need forest type EE anyway, I think. Because we cannot build the whole world in tile editor, it's too time consuming.
Also, I was thinking more about events and if we could use the girls' stats for them? For example, I randomly thought off the top of my head perhaps a maid event where the player could run into Sakuya from Touhou and if the player had a girl with a service stat of X or greater, then they get some money or an item or something, I dunno.
True... but like I've said, it would be nice to know the direction early.My opinion is since renpy disigned for VN in the first place, we should use that part in full before adding something completly new. Meaning forest EE with arena BE.
My opinion is since renpy disigned for VN in the first place, we should use that part in full before adding something completly new. Meaning forest EE with arena BE.
Moreover, we could use general first-person view for battles, like in Might and Magic series. Probably will be easier to create animation, no need for battle sprites, less stringent requirements for backgrounds.
Maybe less pretty though, but maybe not.
I better find something to do or I'll just waste it if I loose focus again. Best bet is prolly to start with Peevish magic teachings. I can start in about four hours.Btw I find it strange that the leprechaun, a forest creature, knows water magic. Shouldn't he teach earth magic only? Maybe we need one creature per element? A mermaid for water, an undead (the woman with scythe that I found) for darkness, etc.
We look through party's "general eyes". Same could be done with arena btw.
It's just an option, but I think it will allow us to use more seamless transition between EE and BE.
It also will solve the problem with characters without battle sprites once and for all.
Btw I find it strange that the leprechaun, a forest creature, knows water magic. Shouldn't he teach earth magic only? Maybe we need one creature per element? A mermaid for water, an undead (the woman with scythe that I found) for darkness, etc.
I was looking for beggar girl sprite, but I only found one (http://livedoor.4.blogimg.jp/wakusoku/imgs/8/9/89627678.jpg) and she's too hardcore for the event text - when I tried her in game, it didn't feel good at all...
So I began to look for girl by status (=she is poor in anime, but doesn't look like shabby beggar), but my number 1# fav girl for that Poorfag from Madoka doesn't have a quality full body pic :( and I don't know many other. (but there is loli who is a god of poverty, lol)
Didn't expect to be this hard...
If I'll ever write events, I'll look for pics first, because doing it the other way is a really unproductive...
If you volunteer to write events for 5 more NPCs before the Alpha... I am actually thinking about him teaching all magic until better system is implemented.I almost finished with packs, I mean with those of them that I want here and now.
I almost finished with packs, I mean with those of them that I want here and now.
So I won't make new ones until slavetraining unless I have nothing to do at all. Might as well write some events.
Why only the two of us discuss EE/BE anyway? We have at least three more active members even now :D
I guess we could use a poll after the alpha.
unless maybe a couple extra random girls...It's not that easy to make a decent one. We need more or less popular, yet blank characters (Rena from mmo, Windows mascots, character classes from Dragon Quest). And ideas are welcomed here.
Maybe noone gives a damn, even I never planned to go to far with BE. Exploration/Mobs/Dungeons I only got involved in cause I figured that you'd help me out with content.But we do need some kind of EE anyway. Otherwise it will be WM 2.0.
It's not that easy to make a decent one. We need more or less popular, yet blank characters (Rena from mmo, Windows mascots, character classes from Dragon Quest). And ideas are welcomed here.
Another option is just search with tags like red_hair+original and make packs like those elven ones. A lot of work though, especially with eyes color.
But we do need some kind of EE anyway. Otherwise it will be WM 2.0.
Orc girl? MassEffect Girl? StarWars Girl? Giraffe Girl? Zebra Girl? There are many random packs for WM...Nope, you do not understand. In our current random packs all pictures are not completely mutually exclusive. There are either very similar to each other original/too rare for unique pack girls (elves packs), or generic characters (DQ characters classes, mmo character class, mascots) that exist but do not have a personality, so it can be random.
Kewl, well, there are still more magical attacks, adding magic to mobs on you.
+ Packs are not very important right now, we already have plenty, unless maybe a couple extra random girls... There is plenty of other stuff that is higher priority.
Maybe noone gives a damn, even I never planned to go to far with BE. Exploration/Mobs/Dungeons I only got involved in cause I figured that you'd help me out with content.
===
I'll start with the magic teaching event in hour and a half.
Addressing girls with no 'combat' sprite. Can we have somewhat generic battle sprites (maybe based on class, or type?) for girls that don't have one?I have yet to see a decent generic battle sprite ::)
Preparing to do my first push in a little while once I figure it out fully lol...In any case, girlsmeets is now typo-free and grammatically correct.
Before I forget, can you modify the settings screen? More specifically, can you add checkboxes for disabling music/sounds in addition to volume controls?
Of course there is a difference. You don't need to touch volume controls to disable sounds, thus you don't have to adjust sound levels anew after every single shutdown.
Well, if renpy is bad with such things, it can't be helped.
I've finished a first working version of Sailor moon pack.
According to this forum, it took me 11 months from when I started ??? WTF I was doing all this time??? :o :(
Now I'm trying to finish Haruhi pack, and I really hope it will not take that long again....
Oki... I'll get to work on the project for 3 - 4 hours again tonight.
Plans is to finish the peevish magic teaching event (enable him to teach magic to girls who accompany the player as well + restyle some choice buttons) and prolly spend some timing hacking at some code to take a break from the events. If anyone sees something specific in need of immediate improvement, let me know.
Otherwise I'll hack at BE code for a couple of hours without any specific purpose.
Are there any problems with pushing? It's best to update the code as frequently as possible so there are as few potential conflicts as possible as well. As I've said, if you want to try you hand at scripting an event, I've enabled simple and advanced conditioning some time ago and if you need help figuring something out, just ask me for specifics. Also interactions are still in a pretty sh!tty shape :( After you push, I'll add some new logic for that as well.
Okay, I've tried pushing this thing like 3 times and it just doesn't work. I've gotten to the part where it asks for my SF password and I've entered it, but it aborts because it says the push creates a new remote head. I assume that means I need to update, but I have updated to the latest thing. So, I dunno.
What's the point? I can look into it but there will not be any difference between disabling music completely and setting volume to 0.
Edit:
Nope, it doesn't look like it's working very well at latest version of Ren'Py. There is an issue with music/sound/voice player in the framework in general... most options and capabilities are disabled to preserve backward compatibility while the player itself could actually be pretty good. There are ways around that but I honestly can't see the point since volume to 0 works perfectly.
Blah... your packs are really good but if it takes so damn long, you should really do events or something like that... kathom dou event didn't take you nearly that long :)But that event also don't do anything at all :) .
btw. tags really needs some more adjustments in the futureYup. If you going to make some new packs, don't tag them until we'll improve the system.
That actually could be problematic since rudi disappeared. I'm afraid we'll need to create our own tagger.
It lacks some basic yet extremely useful functions.
* "jump to N" option or something like that for pictures, very useful for large packs, right now it only has previous and next buttons;
* an option to delete the currently displayed picture; right now to delete any picture you have to close the tagger and delete it manually, otherwise there will be problems;
* an option to delete any unknown tags, will be very useful to delete others' tags and those tags that we don't use anymore.
While the tagger can be used even now, it's far from being ready.
All functions from rudi's tagger, except that "guess tags from images names" thing, are welcomed. Including easy modifying tags menus.
Let me put it another way. No proper tagger = no new tagged packs + no major changes in tags system (like slavetraining). Feel free to decide when it would be better to work on it.
heh, my original comment was more about the tags themselves and not the software :-) because I'm still unsure about some
I admit these additional functions would be a great improvement, as I need to delete some pics or to click 200x on next to resume work quite often, but other then this small annoyance, I don't have any big problems with the software (especially "use last tags" button is just great). but I began using image manager for sorting images by tags and to repair them as tagger dont support that
Well, I can't see his email, not here, not on otherworld forum. He even wasn't online in this year yet.
Unfinished tagger is a crutch, not a tool. One deleted/renamed tag means manual retagging for every single picture.
Btw, the game doesn't read metadata, it reads tag jsons. No need to rename pics or use meta.
I can tell that it was a mistake to rely on a software whose source code is unavailable to us. We should have asked it sooner, before rudi disappears. I doubt that he would have refused to share it.
The same mistake i've made with Future and wm ex, dammit :(
I've tagged a couple of images and I cannot see anything that screams for new software.Yeah-yeah, I have 16500 pics in my packs totally, wanna try some? :D
Don't you have a situation with a certain half-npc, half-girl to fix? ::)
Yeah-yeah, I have 16500 pics in my packs totally, wanna try some? :D
Well, not any time soon...
I see six options here:
1) Try to contact Rudi via Email and see if he can write me a simple guide to the work environment that he used to create the tagger or even made the required modification himself.
2) Abandon the XMP data system and code new filename based tagging software in Ren'Py.
3) Use the old version. I just took a look at it and I wouldn't have a problem tagging with it.
4) Find a programmer familiar with Qt/PyInstaller/Python/XMP/Image libs that could reverse engineer the GUI or create a similar one (logic is opensourced).
Last two options are recoding the entire thing in Ren'Py as it is in Qt or me figuring out how to work with Qt and PyInstaller.
=================
Personally I favor option 3. I consider that software is more than adequate as it is + I can retag 1 or 2 packs myself for slavetraining and if it turns out to be an interesting addition, I am sure people will pick it up eventually.
My second favorite is option 2, cause than I could also add girl, item, event editor and easy ways to edit other stuff but that's something I was planning to do only after 1.0 cause constantly changing the editors as content evolves is very time consuming and I didn't really see any increase in activity for content creation for OtherWorld after Daisy added editors to the game.
---
Perfect scenario would obviously be successfully contacting Rudi but it's a longshot :(
Oookay, I was under impression that the event will be an easter egg for cloning during alpha, but if you say so.
pushed all of sysreq's work and some of my own edits in the peevish file.
==========Yup, great findings. Thanks!
Damn... Sysreq really fixed quite a bit of typos/grammar, didn't know we sucked that much :D
Me writing event for the original Blue might not be a very good idea since I have absolutely no idea on what she's like.
If you want, I can give it a try.
Awesome! I'll take a look into that and see if I can get forest shop witch to teach some fire magic.
Events are fixed, also a number of other bugs that took me hours to clear could have been fixed in 5 minutes with two lines of code I've come up with tonight :)
==========
I'll change back:
"Amn’t!"
That's genuine Irish slang unless this article is full of sh!t: http://www.quickanddirtytips.com/education/grammar/how-to-speak-english-like-the-irish (http://www.quickanddirtytips.com/education/grammar/how-to-speak-english-like-the-irish)
==========
Damn... Sysreq really fixed quite a bit of typos/grammar, didn't know we sucked that much :D
Me writing event for the original Blue might not be a very good idea since I have absolutely no idea on what she's like.Um, I doubt slaves at the slavemarket are allowed to talk or act. You don't have to write anything about the original, except the fact that MC sees her and Blue at the same time.
It's his nickname exactly as it is on the forums + @gmail.com.Nope, doesn't exist.
Nope, doesn't exist.
Um, I doubt slaves at the slavemarket are allowed to talk or act. You don't have to write anything about the original, except the fact that MC sees her and Blue at the same time.
Right... well it's not a priority but I'll add something if I get a chance. I fecking hate doing stuff like that when there is more important tasks to be done.Like what? You said yourself that 90% of remaining work are texts for meetings. That's why I proposed both new tagger and the Blue event in the first place :)
Like what? You said yourself that 90% of remaining work are texts for meetings. That's why I proposed both new tagger and the Blue event in the first place :)
many mobs don't have an affinity. Thus, we need things like strong attack/accurate attack/whatever attack for neutral mobs if you want a proper fight.
Let's say we have strings
"bskills": {"WhateverAttack": 1},
"mskills": {"WhateverSpell": 1}
How often they will be used? 50/50 each one?
Yeah, make sense.
We also should do something with folders structure. Looks like many people are confused when it comes to adding packs.
I don't remember which one of my unique packs is the smallest one, probably Lodoss War. We probably should add it and some random one too to the repo, I suspect some people even dropped the game because of it :D
All right, pushed a couple of things, spells and mobs are almost ready. Tomorrow I have to be at work for a couple of hours, it will be a great time to add spells to mobs. For now random packs again, while danbooru is online (yesterday it wasn't).
Just downloaded it, what the hell is with the insane multipliers like 4.2/8?Those spells have very high cost too btw. One cast per fight, basically.
Why did you remove the generic earth spells btw?Because they suck, both in name and animation. Other default spells could be used after renaming, I guess, but this one is especially bad.
Those spells have very high cost too btw. One cast per fight, basically.
Because they suck, both in name and animation. Other default spells could be used after renaming, I guess, but this one is especially bad.
damage=4.2, cost=10My bad, didn't notice.
So... with the witch teaching air/fire for the Alpha, we just need one more/two more NPCs for Light/Dark. Then something for hero training (I could use some ideas here):
Options:
1) AP/Training on the next day setup in the hero menu screen
2) NPC training (Like Xeona could train weapons skills/witch magic skills and so on, maybe with limits to what they are capable of teaching like in Elder Scrolls)
3 - x) Anything you guys can come up with.
(with training I mean the daily stat mining, obviously stats will be gained during events/interactions and so on as well)
=======
Past that... some generic location events, maybe one or two girls events, maybe some Blue-related cloning easter-egg, I would love to have some deep events as well (like enabling purchase of new building or different slavemarket or something at least slightly game-changing) but that takes time and thought and maybe game is not even ready for something like that at Alpha stage.
What else? Some simple dungeon I wanted to plant in as an easter egg as well but that might take a while to create a decent one unless we use sewers/desert or similar a tilemap...
You could use the leprechaun's sister, peevish.png in my db, for light/darkness. You were right about the other picture, it's a nightmare when you try to delete background there.
I agree with Xeona training and Skyrim-like limits.
We also have a lot of misc items that increase stats. If you make sure that they will work properly on MC, we won't need selftrainig.
Well, I don't know why you have to have 1 npc for both light and dark. If it were me, I'd have a church with an npc that teaches light. And then you could either use a warlock/necromancer hiding somewhere in the city who teaches dark (maybe in Main Street in a basement, just a thought) . OR dark could be taught by a mage who's studying ancient arcane magics .... but I feel like a person like that could probably teach all magic types.
Because it takes time and at least some effort (more in case of peevish, less in case of a witch). Somehow I am having a lot more difficulty with events that I HAVE to code in order to make the game playable than with events that I WANT to code to make it more fun to play... somehow that never transfers to writing code for logic.
Here (http://gelbooru.com/index.php?page=post&s=view&id=347727) it is. I found her with witch+original tags back then, and with pumpkin+broom now :)
Aine would explain why there are leprikons in the forest in the first place.
Although, she doesn't seem powerful and imposing enough for a queen of fairies...
Aaand pushed magic for mobs. Back to rg packs.
At least kill those bots and remove their remains.
A username and password are being requested by http://emoticoner.com. The site says: "Access Restricted (pwrestrict)"
I would like some girlpack girls to start with items equipped.
I was thinking that I can probably write a silent event that will do that. But I'm not sure where I should run it from as main screen doesn't run events at the very start of the game and I would like to avoid any possibility of player acquiring and equipping these girls before it happens.
Or Is there already a some more convenient way to do that? (like writing something in girls .xml)
return
Do you mean existing or unique item? Cause if unique, with a new icon and stuff, then we need to load items from multiple jsons.I've simply created a new items_whateveruniquename.xml file in content/db, with icon image patch to gilpack folder and new item appeared in game. Is there something else to do?
Nah, not for you, but for Xela. Ideally, such items xmls/jsons should be in the girl's folder, otherwise it will be too difficult to install them.
Are you telling me it's too difficult to load several items jsons in the game?
We already do it with girls data files.
How do you propose to problemlessly distribute such changes? Even our Repo won't help.
If two independent modders modify the items.json to add some unique items, that means manual editing for everyone else. And you saw how many problems with installing packs people have even now.
If they both use Repo, their changes will be merged, but everyone else will have to use their packs.
That's an example. If two independent peolpe will change something packs-related in the code, we will have the very same problem.
Nope, that's everyone's business. Because everyone will have to modify the code in order to use third party mods.
While it's not a problem if we stick to that "their business" attitude, we might as well use rpa archives for content then :D
Ok, let's try another approach. How to create an item without using items json?
item = Item()
item.id = "id"
item.icon = "path/imagename.png"
item.mod = dict(charisma=15, attack=20}
items[item.id] = item
And where exactly should I add these lines?
And this file should be where?
Pushed another cool music for main street. Working on Angel rg these days, will be ready before the alpha for sure, unlike huge hair_colour+original packs.
aaaaa... I need help again :( I'm trying to figure it out for hours and I simply cannot find it anywhere :'(
I want to select one specific item, like in:
equip_item(item, chr)
what to write in the "item" field? Like, instead of "chr" I need to use "char["Hinata"]" to select specific girl, but how to call item by it's id?
items["id"]
?
YES! That's it, thanks!Code: [Select]items["id"]
?
@ CWJust run in and it works. Labels for girls start one after another without problems. I managed to have item from items.xml equipped on a girl from the start - which is just what I wanted. Thanks a lot. I didn't have time yet to try advanced stuff, like that creating items in code you suggested or adding unique battle skills from there.
I just pushed a small addon to the script that should do what is required. Please test it and tell me if it works!
I'll look into creating items of addind arena skills later.
I have a question though: Can you make a girl that will only make her appearance as your daughter? As in: she can't be found in the slave market, nor wandering the town, nor the catacombs etc. BUT, there IS a chance one of your daughters will be her.I wonder if we should add something like that at some point. Providing that we'll use pregnancy at all (I'm not sure if we should, it's not like we don't have enough sources for random characters, not to mention clonning).
I wonder if we should add something like that at some point. Providing that we'll use pregnancy at all (I'm not sure if we should, it's not like we don't have enough sources for random characters, not to mention clonning).
That reminds me, did you change neutral tag to indifferent everywhere in the code?
I know where we can use those sad tracks that you didn't want for the city. We could use a cemetery (near the temple if we'll have one), both for dead characters and for meetings with strange girls.
Also you wanted to add race field to girls data files.
Funeral march for the cemetery pls ???I don't know why they seem too depressing for you, but since they are, cemetery is the way to go :D
No, I wanted you and CW to add that... I don't have any packs of my own at the moment.I mean you should add it to the game interface, it will be useless otherwise.
I mean you should add it to the game interface, it will be useless otherwise.
Also, by default it should be "human", unless otherwise stated.
I must have missed that - Race means that we will remove all this catgirl, alien, artificial body etc. traits and write it as a string in xmls? Like human, youkai, data integration thought entity and such?
Or something else...?
Well, it's impossible to write events for every possible race, since there are dozens, if not hundreds, of them. Only four traits (not human, AB, alien, catgirl) mean much less work.
I expect them to be used for some systems like girls relationships. And they will look well on stats screen.
Would it make sense to show girls portrait in the say window at all times?Maybe... I think it can look very good if we also use tags=more expressions for portraits (and these are easy to create) on most standard screens and it shouldn't be that weird on others.
Maybe... I think it can look very good if we also use tags=more expressions for portraits (and these are easy to create) on most standard screens and it shouldn't be that weird on others.
Only place where it's no good is on events that use novel pics, but these are manually written anyway, so that's ok.
And portraits don't suffer from issues that profile pics often have - different outfits or body proportions - so they are much more suited for situations where the girl mood can change a lot.Indeed. But I'm not sure how to make it right. Big quest pics are more beautiful than small portraits, generally.
JGirlsmeets written by me award disposition too generously and gms by CW award to little.
Indeed. But I'm not sure how to make it right. Big quest pics are more beautiful than small portraits, generally.
It's because I expected that there wil be dates or love endings or something like that in the future and that disposition in gms will use only a portion of the stat range, like 600 max. But it's still awards low, I admit.
Concept of recruiting girls by just randomly meeting them and inceasing disposition is still kind of weird. Maybe we should theme or explain it a little differently post alpha.
Well, in your demo version there was a miniquest for Tifa. Perhaps a random (or not a random if pack maker makes his own) quest for everyone or something...
this (http://www.pinkpetal.org/index.php?topic=1920.msg23986#msg23986).
race field
Not much choice here, either les+partner hidden, or two les for both girls simultaneously or one after another.
- try to create arena team in start_id label (or in event)
- try the new tag function and update my part of interactions with it
Creating one shouldn't be a problem, placing one in the Arena is a bit harder.
Note that this doesn't exist yet. I just wrote a concept for the function but since it didn't proof useful anywhere, decided not to implement it (yet).
Ok, I skip these.
I should be able to do the small fixies this weekend, but because I have a lot of school work these days, girls and modders related stuff (not-so-useful part, but it interest me) will surely take me much longer
What's a good place for saves? Game directory or OS's user APPData folders?Game directory\Saves or something like that. I really hate how most of games create saves wherever they want except their own folders, so you have to look for them every time. Though that may have something to do with modern OS security limitations or something, if you use them not from admin...
Game directory\Saves or something like that. I really hate how most of games create saves wherever they want except their own folders, so you have to look for them every time. Though that may have something to do with modern OS security limitations or something, if you use them not from admin...
I wonder if we can provide either a shortcut or maybe a button to open the save folder. I'm not sure if possible for all OS from xp to 8, they might use different path.
Advantages of game/save:- If your OS died and you had to reinstall it, your saves will be safe for sure because they are not on the system drive, unless you had no choice but format everything.
- Everything in one place
...
Please remind me how to add spells to unique girls in xml.
- If your OS died and you had to reinstall it, your saves will be safe for sure because they are not on the system drive, unless you had no choice but format everything.
Wait a sec, if you cannot open save folders, how are you supposed to move saves to another pc, or make backups?
Either shorcuts or readme.txt with all pathes then.
(making sure that they are in proper format and can be just thrown in the game?)This is not guaranteed for my packs atm., so that's why there is no link. I'll add them back after I do the check.
This is not guaranteed for my packs atm., so that's why there is no link. I'll add them back after I do the check.
Also, you once said that you wanted to just use Naruto pack + Rgirls for alpha, so I didn't hurry with anything mine...
Pushed:
- changed beggar event girl + text adjustment - event priority lovered - renamed Kayo's music so it don't appear in other shops - some GM lines reverted back - miku dance white pixels removed
That all from me that I could do quickly, now try to make those girlpack ready.
New data files are in db. And I uploaded tagged Angel rg.
No idea how are we going to distribute all that content ::)
offset = Transform(xanchor=self._sprite_fly.Anchor[0], yanchor=self._sprite_fly.Anchor[1])
# Try to normalize positions:
fighterx = fighter.Position.Transform.xpos - fighter._battle.CameraX
fightery = fighter.Position.Transform.ypos - fighter._battle.CameraY
targetx = target[0].Position.Transform.xpos - target[0]._battle.CameraX
tragety = target[0].Position.Transform.ypos - target[0]._battle.CameraY
# fly from caster to target
mf = Move((fighterx, fightery), (targetx, tragety), self._fly_duration)
renpy.show(tag, what=self._sprite_fly, at_list=[mf, offset, do_the_flip], layer=l, zorder=fighter.Position.Z + 0.001)
fighter._battle.Pause(self._fly_duration)
# continue flying out on the same trajectory
if self._fly_off_screen:
if fighterx > targetx:
flip_math = -1
else:
flip_math = 1
flyoffx = targetx+(500*flip_math)
flyoffy = (tragety-fightery)*((500*flip_math)/(targetx-fighterx))+tragety
mfout = Move((targetx, tragety), (flyoffx, flyoffy), self._fly_duration)
renpy.show("fly_off", what=self._sprite_fly, at_list=[mfout, offset, do_the_flip], layer=l, zorder=fighter.Position.Z + 0.001)
@Xela: Do you understand the image positioning in BE? All of this BE values like "archon", "battle.Camera", "offset" that I don't understand are making it totally confusing for me :(
Code: [Select]flyoffy = (tragety-fightery)*((500*flip_math)/(targetx-fighterx))+tragety
It's just right! Then why the hell is my image always moving in the straight horizontal line? ??? :'(
flyoffy = int(round((tragety-fightery)*((500*float(flip_math))/(targetx-fighterx))+tragety))
(50*(500/400)+200) == 250
flyoffy = int(round((tragety-fightery)*((500*float(flip_math))/(targetx-fighterx))+tragety))
Whoa, it's working! Awesome! Thanks a lot! (I have so much to learn...)Do you have any pointers how to add a new magic skill into the game from separate file? (start_id)
Same way as in be assets file.Thanks, it's working now too, so I remove Mars skill from the assets file.
------------------
These init priority numbers (init -9 python:), how should I use them?
btw. It seems that there is a little bit of confusion in showing pictures for arena.
MC, moobs, npc arena fighters have pics called "combat". They're loaded by filenames (combat 0).
but for girls, we have main tag called "battle". So "combat" for them will not find anything, and it's currently showing just a profile pic.
What kind of writing is needed?
The witch mentioned spells, but doesn't actually teach them.
Damn it :D
Where are Peevish and Aine? I cannot find anything in the forest.
How to disable dev mode again?
Scrollbar for MC sprites is way too transparent even for your usual interface. I use it only because I already know about it :)
We still have customers without the singboard. The idea was to disable them completely without it.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 6, in script
File "game/library/screens/pyt - screens - girlprofile.rpy", line 10, in python
File "game/library/initialization.rpy", line 143, in python
IOError: Couldn't find file ''.
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "G:\hry\renpy-6.16.5-sdk\renpy\execution.py", line 294, in run
node.execute()
File "G:\hry\renpy-6.16.5-sdk\renpy\ast.py", line 732, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "G:\hry\renpy-6.16.5-sdk\renpy\python.py", line 1358, in py_exec_bytecode
exec bytecode in globals, locals
File "game/library/screens/pyt - screens - girlprofile.rpy", line 10, in <module>
result = ui.interact()
File "G:\hry\renpy-6.16.5-sdk\renpy\ui.py", line 237, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\core.py", line 1993, in interact
repeat, rv = self.interact_core(preloads=preloads, **kwargs)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\core.py", line 2311, in interact_core
self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\core.py", line 1530, in draw_screen
renpy.config.screen_height,
File "render.pyx", line 365, in renpy.display.render.render_screen (gen\renpy.display.render.c:5300)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 536, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 536, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 536, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\screen.py", line 295, in render
child = renpy.display.render.render(self.child, w, h, st, at)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 536, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 698, in render
surf = render(d, width - x, rh, cst, cat)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\layout.py", line 903, in render
st, at)
File "render.pyx", line 95, in renpy.display.render.render (gen\renpy.display.render.c:2764)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "accelerator.pyx", line 109, in renpy.display.accelerator.transform_render (gen\renpy.display.accelerator.c:1654)
File "render.pyx", line 166, in renpy.display.render.render (gen\renpy.display.render.c:2491)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\im.py", line 463, in render
im = cache.get(self)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\im.py", line 196, in get
surf = image.load()
File "game/library/initialization.rpy", line 143, in load
child = im.cache.get(self.image)
File "G:\hry\renpy-6.16.5-sdk\renpy\display\im.py", line 196, in get
surf = image.load()
File "G:\hry\renpy-6.16.5-sdk\renpy\display\im.py", line 507, in load
surf = renpy.display.pgrender.load_image(renpy.loader.load(self.filename), self.filename)
File "G:\hry\renpy-6.16.5-sdk\renpy\loader.py", line 428, in load
raise IOError("Couldn't find file '%s'." % name)
IOError: Couldn't find file ''.
Problem is on my side caused by my Naruto pack, it's happening when game is about to shown any Hinata's pics.
But the problem is not in Data.xml (I didn't change it at all from when all was running) and also not in tags.json (I just recreated it multiple times again and it happens even without it) so I'm kinda clueless.
Sorry m8... smart money is on unmatched id vs folder name, even if you triple checked that. Make sure you don't have any spaces or something like H1nata somewhere and that folder location is correct as well.??? You're right. It was lowercase h in hinata... I'm using lowercase ids for my girl, but I left "Hinata" there because she was used in code...
2 clients came to brothel just because it's there, and 2 because of it's fame (=0). A total of four. I wonder why 0 attracted by girls (no girls), should be 2 as well :)
Cool animation during the affinity change btw.
Ok, I finished updating packs, so now at least 20 girls from me should be playable. (link is back in DB again, dunno why I removed it)
I wanted to add some items for Sailor Moon girls and a simple girlmeets-quest label for Rei, just to show that it's possible, but I don't have any strength left, so it have to wait for tomorrow.
I have a girl_id label to what the game will jump from pre-gm girls selection (girlsmeets_quest thing).
So my label starts, but I still have previous screen on (pyt_city_parkgates, pyt_city_beach_cafe...).
How to hide these when I don't know from where my label starts?
$ renpy.hide_screen(renpy.current_screen().tag)
$ renpy.hide_screen("_".join(["pyt", pytfall.gm.label_cache]))
I really hate how traits are currently working in the gameWhy?
Even though I don't use new data files with race field yet, all girls still should have Human race by default. However, I don't see it.
Why?
On default, race is not displayed at all.You should have mentioned it before. Added human race to my data files.
You should have mentioned it before. Added human race to my data files.
Don't forget to add GonDra to credits.
I'm sorry, but an uncaught exception occurred.
After loading the script.
Exception: Invalid key specifier skip
like hundred times and it gives absolutely no clue where to look for bad code :(
Code: [Select]I'm sorry, but an uncaught exception occurred.
After loading the script.
Exception: Invalid key specifier skip
I'm sorry, but an uncaught exception occurred.
After loading the script.
Exception: Invalid key specifier skip
Can you look into ripping:Cool game, but bad for ripping. No ready unpackers exist for it in free access, we need either a hacker or a good C++ coder (if I'm not mistaken) for that stuff. The team that translated it do not share their tools.
Cool game, but bad for ripping. No ready unpackers exist for it in free access, we need either a hacker or a good C++ coder (if I'm not mistaken) for that stuff. The team that translated it do not share their tools.
Yup, I ripped one from Agarest.
Hm, we actually could use race for MC as well in the future depending on the sprite. Maybe including Undead :)
I've made a meetscrip for Rei, it's in her folder now. It's basically just a purchase of a slave with small show reference, to test if this option works.
But this is seriously getting on my nerves as I've seen this report:Code: [Select]I'm sorry, but an uncaught exception occurred.
like hundred times and it gives absolutely no clue where to look for bad code :(
After loading the script.
Exception: Invalid key specifier skip
I just created item in label and it only took me few minutes, yay! If it's really work, it will be my first thing that runs fine without hours of with the company of error reports :)
When did it start? Is it possible to downgrade ren'py version as an experiment, or only the latest one is available?
Items created with:
item = Item()
item.id = "something_new"
item.desc = "test item 2"
...
items[item.id] = item
Don't use default values as it seems, because game wants fields like "cmax" from me.
item.init()
I've also excluded all "number tags" in Dark's packs.What this means? Should I do something too?
What this means? Should I do something too?
*** Took me 3 minutes of dedicated search to find out what was causing the faulty error reporting :DWhat was that?
What was that?
When I set unique warrior girl to arena_willing = "true", she obtains a randomized lv and a set of combat (like sword attack even if she doesn't have one) and magic skills, in addition of what she have in her .xml
This really shouldn't happen, I believe.
It's an Alpha thing. Better sorting costs a lot of development time.Oh it's ok, I just tried and talked her into joining normally through GMs and she doesn't have them that way (she's back to .xml values). So she have this random stuff only in matches and when I obtained her through my lame testing code :) .
Basically arena_willing girls, once joined the arena should not be touched until beta release.
Oh it's ok, I just tried and talked her into joining normally through GMs and she doesn't have them that way (she's back to .xml values). So she have this random stuff only in matches and when I obtained her through my lame testing code :) .
---------
A designg question, should girlpack girls have some starting exp? Right now, all my girls have exp = "0", because I don't know much abou it.
Arena willing means that she might join Arena, not that she actually will. If she does join the Arena at game start, she will be excluded from girlsmeets. Code that governs that is still young, it'll get better with time.Ok... I only briefly looked at the code at thought that she is excluded from girlmeets when she is waiting for a match, not that it's for all eternity, and didn't check the arena rosters after every start, so it could easily be just like you said it its.
She will never have "two sets" of stats as you suggest. The bump in stats happens when she joins the arena at game start.
You should never put arena_willing = True and script a meeting outside of girlsmeets (like an event for example) for the same girl at this stage of development.
But that means there is no point of having arena willing girl, if she just becomes a NPC fighter with 99% unnused pics atm :)
She might participate in dogfights or even challenge the match fighter if she has a permit, I don't really remember how that's coded. Arena is a complicate feature with a lot of code involved in it.No problem with someone wanting to do that, he can change it in .xml if he want after all, I'm just commenting the fact that it currently take much less time to create a NPC arena fighter, so it's not really worth intending/distributing them as so. I've made a whole set of MC sprites in same time I need for one girl. :)
It depends on what you like I guess, I usually have couple of unique girls in the Arena for fun.
I think arena unique fighters and npc teams should take advantage of the percentage system, increase their stats accordingly (best with the ability to preset some multipliers like 1,2x overall arena level) but preserve ratios and their skills and items.
- Coded in significant advantages for Casanova Class:Whoa! I just wanted to suggest that :)
* All requirements for girlsmeets are lower on high charisma
* Possible bonuses to disposition on high charisma
We need a BIG RED SIGN when MC have low health and no place to sleep. I managed to die two times from it so far... no fun.
Read the nd reports... ::)It's just telling me that MC is loosing health (happens every day without brothel) not that he is about to die next day as you don't see there how much hp is left. Something like that should be on main screen, definitely more useful then dogfights reports.
It's just telling me that MC is loosing health (happens every day without brothel) not that he is about to die next day. Something like that should be on main screen, definitely more useful then dogfights reports.
We'll look into a better report system post-@. I've just uploaded a quickfix to the SF. Chances of bonuses for high charisma/sex were too low.Ok. It's not an issue when I'm expecting that, but it may just confuse new players. Most people would probably buy a brother right away, but I take an approach: No girls=No need for brother=spend days in GM to get girls first, and then I just suddenly die because I forget that I was injured in arena fight and my formula: starting hp 100=-2 hp each day=no worries for 49 days doesn't apply anymore :)
How can I kick a girl out from a room in brothel?
You can't... I never felt that was required.So I'm first one to place a stripper girl in a brothel, forgetting that she can't do her job until fourth brothel? (and service girls until third one)
So I'm first one to place a stripper girl in a brothel, forgetting that she can't do her job until fourth brothel? (and service girls until third one)
At least she can fight in arena :)
- Add simple jobs in the city1) Why bother? They will be too simple for beta/release anyway, and you can earn gold by scouring locations even now.
- Add girls switching classes
1) Why bother? They will be too simple for beta/release anyway, and you can earn gold by scouring locations even now.
2) With high enough disposition, I hope?
If you figured how to distribute the game, then yes. Hopefully, release = more testers = less bugs.
$img = im.Scale("content/gfx/interface/buttons/blue_arrow.png", 80, 80)
imagebutton:
align (0.99, 0.5)
idle (img)
hover (im.MatrixColor(img, im.matrix.brightness(0.15)))
action [Hide("pyt_city_beach_cafe_main"), Jump("city_beach_left")]
sorry, got stuck on something stupid again: How to turn this button image by 90°?Code: [Select]$img = im.Scale("content/gfx/interface/buttons/blue_arrow.png", 80, 80)
imagebutton:
align (0.99, 0.5)
idle (img)
hover (im.MatrixColor(img, im.matrix.brightness(0.15)))
action [Hide("pyt_city_beach_cafe_main"), Jump("city_beach_left")]
$img = im.Scale(im.Flip("content/gfx/interface/buttons/blue_arrow_up.png", vertical=True), 80, 80)
imagebutton:
align (0.99, 0.5)
idle (img)
hover (im.MatrixColor(img, im.matrix.brightness(0.15)))
action [Hide("pyt_city_beach_cafe_main"), Jump("city_beach_left")]
pushed:
- tags for gm adjusted a bit
- arrow buttons for beach
- one MC sprite was lacking pics
----------
Unless I break something with this, I should be ready.
I actually need a break for few days anyway
glanced at some of the changes and fixed some coding and writing in the girlinteractions file. Did a small push.
Also, would it be terribly difficult to add a button on the start screen that switches between dev mode and 'normal' mode?
Or maybe if you want it hidden, if we hold Ctr while clicking on Start Game or something?
or am I wrong with assuming this is possible?
Is there anything I should know about your packs?they're alpha like everything else :) I surely update them many times in the future, but now they should work. (they at least don't crash the game on load. After that, who knows :) ) .
Ok, I'll look into DB history...
Stats should be percentages you specify in xml between minimum and maximum. Traits are applied separately.
Then I'm doing something wrong?
I have a "dummy" girl with no traits at all.
in her data.xml I write:
charisma="50"
And in game, she have
Charisma 60/60
...
?
Damn... I've messed up a simple percentage formula and it took me 40 minutes to figure that out :(Great, the numbers are making much more sense now! Thanks!
Going to push new updates right now.
Great, the numbers are making much more sense now! Thanks!
I stat updating the .xmls right away.
It is now. (sry for waiting)
We should merge her packs then after the alpha.
Airi from queen's blade could be a little confusing, because DarkTl also have her (he have a whole series-pack) under same id.
You said we won't use battle_skill field for now anyway.
but you might as well remove that strange requirement from the code.
what this "alpha" actually means for us? can I do stuff just like before?
I'd say it's a type of advertising to draw more people to the game and get more help. Very early and unfinished, but playable enough.
I believe that naruto + few rgirls (so the game doesnt crash :-( ) was a good idea.
Touhou should be very popular, but it's also one of my biggest packs.
I'll report the size of the release soon, still killing bugs with datafiles and scripts in the packs.
There was still something wrong?
Yeah, other than Darks faulty random girl, all of your packs had mismatched ids vs folder names and an error in the path to explotion for the plain animation.I found a source of this renaming bug - Dropbox doesn't synchronize changes in letter sizes :o So while I have "Aino_Minako" folder in my main computer, It downloads "aino_minako" folder name in my second computer and tells me that everything if fine! >:(
While running game code:
File "game/script.rpy", line 85, in script
File "game/script.rpy", line 193, in python
File "game/library/classes - characters.rpy", line 3675, in python
File "game/library/classes - characters.rpy", line 2039, in python
AttributeError: 'battle_skill' is neither a gamestat nor an attribute of rGirl.
About 5 - 6 more GB of native packs will be available soon.
I tried to put rGirls from alpha to repo version, and it gives me this:Code: [Select]While running game code:
File "game/script.rpy", line 85, in script
File "game/script.rpy", line 193, in python
File "game/library/classes - characters.rpy", line 3675, in python
File "game/library/classes - characters.rpy", line 2039, in python
AttributeError: 'battle_skill' is neither a gamestat nor an attribute of rGirl.
Is there a fix?
----------------------------
Also:
Do you want to have separate modder pages, like there are for WM to upload and update girlpack/event stuff, or keep it hidden and upload it only once in a while in main posts (like SM3) ?
Oki, just pushed.Thanks!
Yeap, might be useful. I am also thinking about a single thread where one modder is allowed to make only one post in a generalized format.Maybe a link in main thread that goes to simple txt file shared in DB where the actual updated links are?
Thanks!Maybe a link in main thread that goes to simple txt file shared in DB where the actual updated links are?
[size=78%]https://www.dropbox.com/s/hrv92wy1vhxnchj/dummy%20file.txt (https://www.dropbox.com/s/hrv92wy1vhxnchj/dummy%20file.txt)[/size]
(just trying to find a way that allows me to keep stuff updated without bothering you with it each time)
Feel free to start a new thread and maintain it as you like! I'll sticky it.ok... but I wait until I actually have something worth it.
Right now I only have Shoukaku (Kantai Collection) updated, so you can add this link to her:
https://mega.co.nz/#!CdADVJRT!sejpqltsiHqnF3SsC8VnthyaHVA_0PzFQMMCa7OxGng (https://mega.co.nz/#!CdADVJRT!sejpqltsiHqnF3SsC8VnthyaHVA_0PzFQMMCa7OxGng)
[/size]But I noticed that you used my Airi inside DarkTl's pack instead of his and linked it like that - but I never intended to do so! - I would never touch anyone's else work like that... (*feels bad*)
But most importantly, now there are two Airi data entries inside... you should just keep link to his pack (it's already there), and I explain my alternative somewhere later...[/font]
* I've removed his QB link cause it has an older datafile than my upload. Was never my intent to post both. Also there are a bunch of packs that Dark hasn't uploaded to Mega it would seem... I don't have any energy left to figure out what's what tonight. I also have no clue as to why there are two SOA packs, they are not the same link/size so it's not a clone.I use db mostly. All existing packs are there (even not tagged), and new data files for them are in db too, in a separate folder.
I use db mostly. All existing packs are there (even not tagged), and new data files for them are in db too, in a separate folder.
I'll deal with double SAO and other mega stuff when I get home. Providing that mega will be in the mood for uploading.
where can i find configuration file which contain player gold ?
in the current alpha
thankx
Xela, use db links for my packs for now, I'm uploading packs to mega currently, so I removed all old ones.
Which of my packs are included in the release?
Make sure you don't have faulty traits (test with the Alpha if you're releasing for it). Current version was updated with tiny bit of code to test for traits differently.I won't touch data files for now. During the code review we will change Edgy to Timid simultaneously everywhere.
Hopefully this is where you want feedback on the Alpha. If not, you might want to start a thread.
Overall impression is that this is great for an Alpha.
I was able to download, install and play without any hiccups.
Got to turn 85 without any crashes.
It looks great and the gameplay is mostly intuitive.
Music and sound fx are great. Pix are high quality and a nice mix for an alpha. Text was amusing.
Alpha suggestion:
It would be helpful to have a txt file with any features that aren't yet working.
For example, I 'looked around' in many of the areas and only got 'bupkis' type responses. I wasn't sure if I was just unlucky or if some areas had no 'look around' events.
Main menu
You should have a 'continue' button and/or 'load save' button in addition or instead of 'load QS'.
The QS is not always the most recent save.
Keyboard shortcuts
Are there any? I can understand if they aren't yet implemented, but having to hit the upper right hand corner 'x' repeatedly is a pain.
Main Character
It seems I can only be male at start, despite having female avatars. Female armor is therefore unusable by MC.
Battle
When choosing dogfights, having the potential opponents sorted by reputation would be useful.
Is 'bestiary' enabled yet? All I see are silhouettes with "?". Another case where I wasn't sure if it wasn't implemented or if I just wasn't high enough reputation yet.
Dogfight and Survival battles work fine.
Meet girls
Are interactions persistent? e.g. If I give a gift or compliment that works, will it carryover to the next time I meet the same girl?
Never got the same girl twice to check. The named beggar in the Park seemed not to keep any positives from the three times I bought her food.
Starting gold
10k may be okay for when the game is balanced, but it's too low to test a wide variety of features. Which .rpy file has that?
(Yes, I know editing .rpy files with Editra or whatever may break the game.)
if config.developer:
$ hero.gold = 100000
$ hero.magic_skills ={"Windwhirl": 1, "Ice Arrow": 1, "Fire Arrow": 1, "Fire Ball Z": 1, "Divine Light": 1, "Geyser": 1, "Insatiable Spirit": 1, "Spring Thunder": 1, "Forced Dawn": 1, "Other Light": 1, "Wrath Of Nature": 1, "Clay Spikes": 1}
show screen debugTools
jump mainscreen
return
$ hero.gold = 100000
if config.developer:
$ hero.gold = 100000
$ hero.magic_skills ={"Windwhirl": 1, "Ice Arrow": 1, "Fire Arrow": 1, "Fire Ball Z": 1, "Divine Light": 1, "Geyser": 1, "Insatiable Spirit": 1, "Spring Thunder": 1, "Forced Dawn": 1, "Other Light": 1, "Wrath Of Nature": 1, "Clay Spikes": 1}
show screen debugTools
jump mainscreen
return
Income tax
This was my biggest gripe on balance. The jump from 0 to 10% when gross income hits 5,000 is fun-breaking.
I was grinding up income from my two girls and the MC either working or arena fighting, but when I hit 5,000/week gross, my funds started diving and I stopped playing.
Income tax should be on net income, not gross. Also, you might want to check the income calculator- I started exceeding 7,000 and have no idea how.
The two girls were averaging about 40gold per AP which meant about 1100/week gross. The MC worked at the arena for about 1,000/week gross,
yet the last weekly income (days 78-84) was >7,000. Is the income calculated actually Year-to-date?
There is one avatar but according to CW he only looks like a girl. It's not possible to start with a female MC, that would also require several versions of most texts and events, we cannot afford that at the current development team size. I warned him it will be a cause for confusion....and he was in SM3 too :( Ok, I remove him and turn him into arena fighter instead.
...and he was in SM3 too :( Ok, I remove him and turn him into arena fighter instead.
But still, MC selection screen should have "sex: Male" field, because some of the other sprites may also look a bit girlish.
Also, because we started using hero portraits in the game, I think we should show a portrait and maybe even combat pic there too. I like when I know exactly what I get.
@XelaI uploaded my packs to mega and created a thread too. Please remove NGE and Sailor Moon links from alpha thread.
Service girls are working now in Alpha (not yet in repo), thanks!
Are we sure the Crazy Packs are working? I've never seen any Bleach girls in alpha from that Crazy Bleach pack and even if I enabled the console and tried to add them, their ID is not there. (If it's supposed to be the same, char["Orihime Inoue"])
Is there something you would like me to look into right now?
I'm surprised that no one mentioned difficult fights at arena yet, except Jaeke. I'm not sure if we should do something about it.
I haven't actually been able to play due to some errors I haven't gotten around to figuring out yet.
I agree with most of the feedback I've read though. Mainly minor UI things, balance or stuff planned for the future.
Good job on the Alpha I say. ;D
If I change the girlpacks mid-game, I start to get missing picture errors everywhere. Not in new game, so it seems that picture links are stored in save files. Is it possible to renew them somehow?
We had a rebuild button in the early version I believe.
I'm not dead I swear ??? , Just that RL has had me running around like a damn headless chicken for the last few months hence why I haven't had the chance to sit and really write something decent. Not intentional at all though I swear
- Difficulty settingsLower taxes (or no taxes at all), more gold from the begining, more AP for both MC and girls. Easy mode.
We had but I've disabled that, maintaining it in ever changing game seemed to time consuming and I didn't have the skills to unify it with normal loading process back then,
I'll look into restoring the whole thing as time permits!
Thanks, I'm playing the alpha, and when I notice a bad picture in my packs, I repair it - but that always cause the game to be unplayable at some point, when I can't even open the girl list or see new day most of the time.
Is it possible to add girls into running game, or is it the same?
I just need to clarify this as I have to tell the players that updates in my packs are not save game compatible.
---------
Because someone wanted that, I've made a smaller version of my packs, reducing the size to 1/4. I can do that for my 3 naruto girls too if we want to reduce the download size of alpha a bit.
Consumables that increases joy are effective against the girl tendency to leave if you do not pay her wages. I think that's ok, but they're a bit imbalanced right now, especially cmax value is strangely distributed.Hm, I'll look into it tomorrow.
Ok then, about joy items. Some of them are very rare and expensive (they also increase some stat permanently). Others are food, and we have food poisoning effect.
All of them are more or less balanced by ctemp field btw.
Cmax field used in items like Quality Makeup in order to limit charisma bonus, not joy. Although, I might increase it a bit in the future, so it will be useful at higher levels.
Holy sh#t, somehow it has cmax = -10. I wonder if it is the whole problem.
All of them are more or less balanced by ctemp field btw.*I mean cblock.
@Xela: Where I can find part of the code that puts and brother building image into next day screen report (and school too)? I've found where it is for all other screens, but not this one. These images are using just a scale function so it's very distorted in screens.
Fixed a bit and pushed consumables xml.
I wonder, do we need to change them all to jsons during the code review as well?
don't think the romance option will have any meaning until (if ever) we add a dating...Proper dating will require insane amount of writings. It is pretty much impossible without a hard working writer. Well, maybe closer to 2.0 version my English will be good enough to write it :D
Those are not ideas then, but requests :)
That part I'll be working a lot during the code review.Did you see another report about anal stat and booty lube in alpha release thread? I suspect this is the part you'll be working a lot during the code review :D
Did you see another report about anal stat and booty lube in alpha release thread? I suspect this is the part you'll be working a lot during the code review :D
- MC gift option doesn't show any items if you don't have corresponding item category selected in hero screen (All or Gift)
Another strange item: Manual of the Dancer is disappearing after entering shops!
So Manual of the Dancer disappeared from my inventory, but when I bought a second copy, I'ts listing that I have two (so it's not physically gone, just invisible). I can give both to a girl, and she keeps them just fine. I can transfer one manual of the two back to MC. Now both the girl and I have one and it appears correctly both on MC inventory and item transfer screens. But when I enter any shop, manual that was in MC's inventory is visually gone from sell selection and MC inventory again. I can make it reappear with taking the second one from that girl - it shows two again so I can give one back to that girl after mine is "renewed".
Another two books I have, manual of sex and manual of health do not have this issue
You mean they don't understand cmax field, or your system with two maximums, or both?
I've never seen any piece of armor appearing in the alpha, same goes for boots and small weapons, in 500 days in game. They have "Work Shop" location in .xml, but this blacksmith lady only have 100x short sword, 100x long sword, 100x long bow, some replica swords, magic bows and crystals staffs every time and sometimes on lucky days a better staff or sabre and nothing else.
Exhaustive tooltips for items should be a good start, no? I remember most things about items because I created them, but for others it should be harder.
Besides, if players would be able to see both lvl_max and max stats, and how are they rise upon lvl up, it would clear up things a bit.
That reminds me, don't forget to add intelligence stat, girls don't have it right now.
Change her filter... In the next release, I'll set all shops filters to all. For some reason I thought that setting workshop to weapons was a good idea but that just causes confusion.NP, I'm just telling what was confusing. :)
- I think we should add a disposition increase when MC personally saves a girl from customer. Because she gets -100 when you are not here, it would be nice to have a chance to win some back too.
- experience for warriors from guard job is very low. That's totally understandable when nothing is happening, but they don't get any more noticeable experience even if they get to fight the customer.
- experience scaling in dogfights is very disappointing. I've taken great length to take my warrior girl through arena fight, and when she actually survived the fight, in like 1 of 10 attempts (with a week of healing between each), she go only 90 experience, while my MC got 900. =no point at all in taking a challenge
- but on the other hand, levels for guard seem to not be required at all, because with lv3, my girl was able to easily fight off every customer that threatens even my lv35 prostitutes :)
- flowerbeds are doing too much for such low-cost upgrade. They should have a smaller chance, or be limited by some cmax value.
- there should be a limit on how much arena rep. you can gain from one type of survival. Logically, it's a great feat when you defeat some monster, but not much if you do it 30 times after that.
- makeup items and parfumes are relatively balanced, but fatigue reducing potions are really profitable later on. btw. listing for how long effect of items last would be really friendly
- still wondering why starting wage of a prostitute is 4 times less then what other professions wants. I was thinking about keeping a one cleaning girl just for fun, but that would bankrupt me in no time... 7 whores can support one warrior in wage, but noone else. (in early game with 2 brothels)
- prostitute ranks wants a ok amounts of refinement and money, but laughable experience - in time a girl have enough refinement, she have like 400k exp and it wants 50k
- we should put more brothels in
- food poisoning if fun, I totally forget something like that is in :) (and seriously, the whole alpha is much more fun then I thought it would be - so much that I was only playing until now and did nothing else)
What's stopping you?I think we didn't do that for alpha, because you had some advanced system for rooms in mind? But if it's not the case for near future, I'll look into that. It's really a super easy to add a building in .json :) only think to solve are those distorted pictures.
Kewl :)
I think we didn't do that for alpha, because you had some advanced system for rooms in mind? But if it's not the case for near future, I'll look into that. It's really a super easy to add a building in .json :) only think to solve are those distorted pictures.
- makeup items and parfumes are relatively balanced, but fatigue reducing potions are really profitable later on.Yup, they probably should be more expensive and rare.
Wrong departmentI cannot add indicators for how long effect of items last ::)
- Stats completely rescaledI hope you removed stats normalization as well. We shouldn't make every girl ready for anything, it's player's work.
I hope you removed stats normalization as well. We shouldn't make every girl ready for anything, it's player's work.
I will/cannot remove normalization completely, modder already can do quite a bit.You cannot reduce initial min stats? How about, I don't know, 1-5 instead of 40?
You cannot reduce initial min stats? How about, I don't know, 1-5 instead of 40?
I doubt there even will be characters with that low stats, but right now they are impossible at all. Basically, if I want to create a character with very low stats, I cannot do it with the current normalization. It's one more side of modability.
We need to decide what we work on next...
* We should use type field in addition to the current system to determine which items can be sold in shops. Thus, the witch should buy all potion type items, while cafe should buy all food type items.
* We probably have no choice but to use levels, stats caps and so on for mobs. Right now they are either too easy or too hard during one fight.
* Someone mentioned somewhere that during girlsmeets you could repeat the same line over and over, getting disposition. The success of such tactics should depend on MC stats, for example, 1 attempt per 100 charisma.
I recall you mentioned somewhere that initial min constitution is 40...
Anyway, I removed all traits from Nico (you have her from the start in dev version) and set every stat to 1 in xml.
Every new game she has random stats around 15-22, except reputation (always 1), health (always 100) and libido (1 too). Now I simply don't understand what is going on :D
Why they are random?
Aside from that, I wanna clones and slavetraining :)
Slavetraining is self-contained system, but clones probably require life imitation system for all "free" girls.
But to tell the truth, I'm not sure about gms. They're just not interesting as they are now. In alpha, it felt to me like it's just 1. Hey, I need another girl, 2. Find one I like, 3. Spam everything until she's mine, with optional 4. spam a bit more if I want to change her profession.
I started to thing that it could be better to not have gms for recruiting at all, instead have some another job offer/hiring process, and leave disposition stuff separated, but merge all interactions/gms/dates into one, because it's just too wasteful to have two or three different parts of code and texts that actually do the same. (to access one system from both city and brothel)
I correct the items in DB. I suppose I should keep the old version in thread for alpha?
Cloning is easy, I don't expect it to require much effort or need imitation system.Well, if you fire a clone, she still should try to earn enough money somewhere to stay alive. Thus, we need some kind of life for girls, where they work, earn money, spend them, etc.
As for ideas for slavetraining, well, you could just port everything you like from Валет Плетей for a start. There are tons of ideas and options.
I guess slaves could have more stats than free girls. The problem is, what should happen to those stats if you free them.
So you probably could add clones (or maybe add "return to main menu" button to game over screen) meanwhile.
One option is to statutory limit the number of slaves, for example, no more than 20-30% of the total girls amount per building (again, slave riot and stuff). Another one is to add a new stat to MC (like leadership or domination), and to limit the total number of slaves according to it.
In addition to it maybe add a slaves guild, where you should buy rights to own more than 1-2 slaves.
Captured rmg should should have the minimum possible training (maybe even much less trained than any girl from the slavemarket, like negative values or something). And you cannot start training/sell them until you make them slaves (and pay to the slaves guild again for that).
Yet you can talk/rob/rape/just let go/kill/hold in dungeon for some time/etc them without enslavement.
In order to free a slave again a certain sum required, and maybe "ideal" slaves (trained to max and with very high disposition) could refuse it.
Not sure how else we could limit slaves liberation, ecxept slaves guild penalties.
Also I wonder if we should allow enslavement of free city girls, like wm-like capturing/holding in dungeon. Maybe we could, but this should be illegal and, thus, dangerous to MC and his business.
Well, if we'll have EE similar to the first Huntsman's game (our forest), we might as well use a similar capturing system.
frame:
background Null()
minimum(426, 376)
maximum(426, 376)
xfill True
- add(l_team[0].show("battle", resize=(426, 376), cache=True)) align(0.5, 0.5)
+ if l_team[0].has_image("fighting"):
+ add(l_team[0].show("fighting", resize=(426, 376), cache=True)) align(0.5, 0.5)
+ else:
+ add(l_team[0].show("battle", resize=(426, 376), cache=True)) align(0.5, 0.5)
use pyt_arena_stats(l_team[0])
It works OK for girls, but now MC and arena fighters are not using combat pics anymore, but only battle_sprite pics. But how? The code before and the one in Else: part are the same...I have something I don't understand at all :(
I did this in pyt - screens - arena_inside.rpy:Code: [Select]frame:
It works OK for girls, but now MC and arena fighters are not using combat pics anymore, but only battle_sprite pics. But how? The code before and the one in Else: part are the same...
background Null()
minimum(426, 376)
maximum(426, 376)
xfill True
- add(l_team[0].show("battle", resize=(426, 376), cache=True)) align(0.5, 0.5)
+ if l_team[0].has_image("fighting"):
+ add(l_team[0].show("fighting", resize=(426, 376), cache=True)) align(0.5, 0.5)
+ else:
+ add(l_team[0].show("battle", resize=(426, 376), cache=True)) align(0.5, 0.5)
use pyt_arena_stats(l_team[0])
How could if l_team[0].has_image("fighting"): be True for MC?
Xela, fix your game links in the alpha release thread, some of them are broken somehow.
I recall we wanted to randomly add some kind of traits to customers at some point. Is it possible with the current system?
They work differently, what are you trying to do?if has_image() don't work for MC and NPC's, then what I would like to know, is probably how to skip them, like -do something only if selected character is a girl- if condition.
If so what Folder should it be copied over to?In alpha, there is already a pack from wm - "Crazy Bleach" folder. If you place it like this one is, it still doesn't work?
but there could be errors, it hasn't been tested that much...
if has_image() don't work for MC and NPC's, then what I would like to know, is probably how to skip them, like -do something only if selected character is a girl- if condition.
I think has image just rigged to always return True for those classes. It seemed simpler to code the tags in the show method. What is not showing correctly at the moment?
would it work if capitalized
Alright, summarizing my thoughts about ST...
*Obedience is a must have, we cannot use disposition alone for everything. It should be the same stat for everyone, but it could be called obedience for slaves and, for example, dedication, allegiance or loyality for free ones.
*Sensitivity from both Valet and SM. In the first game it means both physical and psychological sensitivity, in the second one it means physical only. Depends on how deep you want to simulate girls psychology. Basically, using too rough punishments and too perverted training/actions descrease it in both games, and vice versa.
*Escort, singing/dancing/music, healing, clerical work skills we could add at some point, providing that there will be jobs using them, not necessarily within brothels. Right now we don't have such jobs, we most likely will at least some of them in the future.
* BDSM skill is a must have.
*I'm not so sure about group though, basically you do the same thing, but with many people, so... Maybe we should use stat like pride/libido/obedience or something like that, so if pride is high enough for example, then a girl will refuse to do group.
*Petting. Both Valet and SM have it. Maybe we should too. In Valet it's a prelude to sex, in SM it's masturbation types of skills, basically.
*We could port a lot from Valet, I doubt it will ever have translations.
Maybe instead of adding more stats, it could be better to add the traits + stats + level to decide a few things. For level could indicate a girl's professionalism towards a job and then adding certain traits and/or stats to see if she accepts to do something and how well she does that. No need to add more stuff that way, just use what is already there.
Yeah well... loads more stats and clicks basically then?You cannot avoid more stats anyway. At least bdsm and some kind of obedience/loyality are required no matter the system.
As I mentioned, unlike pretty much any other system (even rmg capturing), I have no idea how our slavetraining should look like :D
How to rank up girl? I have met all the requiments(Money,exp,refiment) but i can not rank her up.Do I need to click on a circle with rank?
but we could take that direction with slave training (more trait checks/simple jobs + less stats) instead of SM/Valet approach.*SM is pretty boring because it is repetitive. It has many stats, jobs, endings, but in the end it lacks diversity, they are just numbers that you can clearly see and control.
Security: I think one should be able to hire security from girls willing to be a warrior without going through girlsmeet disposition raising. You're paying a salary for a pretty cushy job where the warrior only occasionally has to take on an unruly customer.There probably should be a difference between strong/famous and weak/beginner warriors. Famous ones do not need a job that much, so you will need some disposition for a start.
...We don't have an artist unfortunately. Xela is still hoping that we will have one and then will redone the whole interface.
...
...
Also event driven system might work out better than stat driven one.And what do you mean by that? How events can replace stats?
use r_lightbutton(img=entry.show("bikini", "beach", exclude=["winter"], type="first_default", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
with a variable: $citybeach_tags = '"bikini","beach"'
use r_lightbutton(img=entry.show(citybeach_tags, exclude=["winter"], type="first_default", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
but that's not working. How can I do something like that?
^These are very decent ideas, however you should be more clear about basic personality. Most of our characters (except random girls) should have a more or less unique personality, so it will be impossible to perfectly code for everyone.
Things like what they like, dislike, hate might depend on traits, but if you want more personal approach, you should give actual example of such a system.
Basically, I like obedience/loyality/pride system.
However, fear is probably an overkill as a separate stat. You probably cannot be loyal to someone you fear a lot, so fear could be negative loyality for example.
@Xela: I have a questing about pictures in gm girls selection:
I tried to replace tags in this:Code: [Select]use r_lightbutton(img=entry.show("bikini", "beach", exclude=["winter"], type="first_default", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
with a variable:Code: [Select]$citybeach_tags = '"bikini","beach"'
but that's not working. How can I do something like that?
use r_lightbutton(img=entry.show(citybeach_tags, exclude=["winter"], type="first_default", label_cache=True, resize=(300, 400)), return_value=['jump', entry])
I hope i explained myself well enough :p
And what do you mean by that? How events can replace stats?
Did you try the new Akabur game?Can you send a link? If it's something useful to see....
Ok got a question regarding Grillz 8) :
Topic of my question is insertion (phrasing!) and removal in an active game, i.e. I found or created some nice extra Girl ??? and want her in my game.
How can one go about this? Last time i removed some unwanted individual, I kinda shot the whole game, :-[ receiving a *missing image* error at a lot of times.
You guys probably gonna tell that new girls added to the 'chars' folder will pop up once I start a new game. Well heck no :o , I didnt spend 20 hours building my Brothel business to start anew right away bcs of this. Is there a solution to integrate them into the active game somehow? Happy to take any advice on this case. :-\
Regards ~ 苦楽
Can you send a link? If it's something useful to see....
Maybe we should postpone ST for now (since we don't even have a clear concept yet) and add life simulation for girls instead?
I'll try that new game, however in my opinion it is easier to add a couple of stats than write a couple dozens of unique events.
Still, the game is just an early alpha and Xela might find a way around some of that eventually.
We still have time to discuss this and we can always change it in the process. Regardless of what approach we will take, I need to create buildings/escape system/logic skeleton first that would be the same for any option.Time to create ST thead and discuss buildings/escape system at very least? :)
You're doing it right but forgetting to unpack the values. It should be entry.show(*citybeach_tags, ...), otherwise you pass a tuple of strings instead of individual strings as arguments.Thanks. That helped me, but as I still don't understand this much, I got stuck with the same after a while again. I suppose I could just ask about the whole thing. I want to make something with a structure like this (to replace the excluding):
$citybeach_tags_list = []
if chr.has_image("gm","beach"):
$citybeach_tags_list.append(("gm","beach"))
if chr.has_image("gm","bikini","simple bg"):
$citybeach_tags_list.append(("gm","bikini","simple bg"))
if chr.has_image("gm","swimsuit","simple bg"):
$citybeach_tags_list.append(("gm","swimsuit","simple bg"))
if chr.has_image("gm","bikini","generic outdoor"):
$citybeach_tags_list.append(("gm","bikini","generic outdoor"))
if chr.has_image("gm","swimsuit","generic outdoor"):
$citybeach_tags_list.append(("gm","swimsuit","generic outdoor"))
if not citybeach_tags_list:
if chr.has_image("gm","generic outdoor"):
$citybeach_tags_list.append(("gm","generic outdoor"))
if chr.has_image("gm","simple bg"):
$citybeach_tags_list.append(("gm","simple bg"))
if not citybeach_tags_list:
$citybeach_tags_list.append(("profile"))
$citybeach_tags = random.choice(citybeach_tags_list)
use r_lightbutton(img=entry.show(*citybeach_tags, label_cache=True, resize=(300, 400)), return_value=['jump', entry])
(not working)
...
if entry.has_image(...):
bla bla bla
(or even less stats than we have now as I seriously think that presence of intelligence, character and charisma is debatable) and use mainly traits.
Did you assign chr to the girl? This is before chr is set for the girlsmeets so unless you have something like $ chr = entry, it will not work. Or you can just auto-replace all chr with entry so it reads:Thanks, with this, it selects the images I wanted.Code: [Select]if entry.has_image(...):
bla bla bla
Unless you know someone who will write for us about the same amout of texts and events for every girl (or at least for every trait and their combinations), in which case I don't mind ::)
Thanks, with this, it selects the images I wanted.
But in the end it's good for nothing, as the image is changed every time I hover over any button or reenter the screen. I guess it was a pretty stupid idea to put something randomized into screen definition :)
if not entry.flag("beach_tags") or entry.flag("beach_tags")[0] < day:
# ...your entire choice code here, it should end with:
$ entry.set_flag("beach_tags", (day, random.choice(citybeach_tags_list))) # instead of:
# $ citybeach_tags = random.choice(citybeach_tags_list)
use r_lightbutton(img=entry.show(*entry.flag("beach_tags")[1], label_cache=True, resize=(300, 400)), return_value=['jump', entry])
...
Too many stats like Whoremaster get annoying micromanaging, especially when Obedience, Spirit, Love, Finances, Tiredness, all COMBINED with TRAITS AS WELL, influence the stat you care about Rebelliousness.
Better make both and on config menu to chose if you like micro management or not..
Not doable with a small team, one way needs to be chosen.
and looked like you where possibly planing to use the otherworld outffiting/body dummy option in the future
We could turn charisma into another static stat with fixed min and max like disposition or luck that cannot be risen with the level ups? What do you guys think?Charisma stat, in the meaning of physical appearance (=beauty), doesn't make much sense as something you can learn. Girl just grow to be like that (represented with traits like "great figure") or not. Same with intelligence.
Wouldn't it be better to think about it (and also that slave-training) from the other side? Think about some job events and then what stat/trait/something those event's could use?
PS: Tell me if girl flags work out in the screen when you get that done.Just did that and it seems to be working!
This should be #1 topic for debate at the moment. Specifically character and partly intelligence. We have traits that cover those so it's basically doing the same thing twice in a sh!tty way since stats often do not match the traits after 200 - 300 days in the game.and
Tier 0: The girl has no skill or desire for BDSM. (The same as 0/100 in a stat)are basically Valet approach, where you see not numbers, but approximate text description of the current stat value. I don't mind it, even though it will require considerable amount of work to change our system this way.
Tier 1: The girl is alright with it. (25/100)
Tier 2: The girl is good at it. (50/100)
Tier 3: The girl is great at it. (75/100)
Tier 4: The girl is awesome at it. (100/100)
We don't need 'em for every girl, just relevant traits.I hope you are not going to copy "slave training" from that game. There you just grind gold and then spend it in the slave training school, it hardly could be called an actual training. By yourself you only decrease princess's popularity.
Someone has suggested that we do something about charisma (beauty) stat. It's kind of lame when you have a super pretty picture of a girl and she has a charisma of 30 while another girl who already has a level of 50 has charisma of 150.If you suggest us to set girls beauty according to our preferences by 100-point scale, it will be one big subjective mess.
We could turn charisma into another static stat with fixed min and max like disposition or luck that cannot be risen with the level ups? What do you guys think?
heh, there are even games where you can choose what "style" a girls is pursuing, like "sexy", "cute", "cool"...Maybe something along these lines... Then again, it's quite subjective, but not as subjective as 100-point charisma scale or something.
andare basically Valet approach, where you see not numbers, but approximate text description of the current stat value. I don't mind it, even though it will require considerable amount of work to change our system this way.
I hope you are not going to copy "slave training" from that game. There you just grind gold and then spend it in the slave training school, it hardly could be called an actual training. By yourself you only decrease princess's popularity.
If you suggest us to set girls beauty according to our preferences by 100-point scale, it will be one big subjective mess.
There are also things like dresses, makeups and perfumes that should increase beauty even for already beautiful characters.
Maybe something along these lines... Then again, it's quite subjective, but not as subjective as 100-point charisma scale or something.
Forget about "subjective messes", it's not really applicable since 90% of stuff in the game is debatable from perfectly logical viewpoints. You have an issue with calling a girl cute for example, I don't. We just need to set the concept and work with it.They all are cute. Well, almost all. Thus, it hardly could be used in the game because if everyone are cute, then we might as well ignore this characteristic :D
Stats are a very serious issue, especially from development perspective, they often repeat traits and consume insane amount of time to balance but have/will have purpose in future, like intelligence stat is currently being used only for guard even where an intelligent girl can find a way to resolve the situation peacefully. However in the future, we'll have stuff like Alchemy, maybe scrolls and it can find a very realistic uses there for example.That's why I mentioned Valet approach. Just like with intelligence, where we have traits from retarded to genius, we could do the same with other stats, including charisma, from ugly (ok, we don't have ugly pics, maybe unattractive) to stunning. We even could use more "levels" for stats that could use them.
Charisma is already being used all over the place so getting rid of it will take time as it is... also it may be used for requests.
We probably should change all passwords, even google is affected ::)
Wow, we have a first independent pack makerI really hope that people understand that there will be changes that will probably require updates of girlpacks in the future.
I was checking tags in various places, and a place I have most issues with is the rest job. It uses some trait based selection of lines and pictures, which is not a bad idea, but in current implementation it results mostly in just showing profile pics (due to lacks such pics) to a point, where "rest" tag category (which is made for this) is only very scarcely used - and that just doesn't look very good.
There are some great texts (but some weird too) and situations, but I would like to achieve a bit better matching with pictures somehow.
Also some of rest pics have things that could never be trait dependable, like taking a walk in a park, sleeping... so adding some picture based texts can work there. (and, if girl have "reading" a book picture, why she have to be smart to display text that she is reading a book?)
Maybe we could use some sort of reverse technique, randomly selecting a "rest" picture first and then display text based on what other tags that selected picture have...
I would like to put some effort into this, but figuring out a good logic for this is probably a bit too much for me...
May I ask about your option there?
I studied jobs further:
Blowjob pics are not used at all, because deepthroat, footjobs and handjobs are taking priority over them (titfuck is not used at all). As normal blowjobs pics are the majority for most girls, this leads to displaying only very few pictures repeatedly.
Problem is, that for standard"blowjob" (http://2imgs.com/2i/i/534ce70f/b710ff003a4684f07a11aedd5300f7e5/bd76b69c4f.f.jpg) pics.,there is no subtag to select them by it, so the game is taking then as leftovers, and never display them unless there is nothing else.
This is, more and less, repeated everywhere, for example "les" pics without secondary tags (imagine a pic with 2 girls close to each other but not doing anything yet example (http://2imgs.com/2i/i/534ce5c5/40b2a94ab7488eb933788537cefb21da/ac67a78d5e.f.jpg)) are also not used.
So the question is, should we change the way we tag pictures (putting subtags everywhere? I do not mind, but I'm not the one with most girls) or could solution for this be coded in?
If not "read" tags, then maybe something alike .has_image but with option to select tags that must not be there (and excluding them later in show)?
Maybe it will be best if I do something else for now----We could use descriptions for effects. And race traits, as general as possible, like elven blood (any elf) or celestial origin (angels, goddesses, etc).
exclude_tags = all_tags * 1 # (*1 basically copies the list instead of just assigning a label to the variable that point to the same list, it's a bit safer, you can also use copy.copy(all_tags), it's longer but better python).
exclude_tags.remove("orange")
if chr.has_image("orange", exclude=exclude_tags):
# do something...
acts = list()
# We'll be adding "les" here as Many lesbian pics do not fall in any of the categories and will never be called...
acts.append("les")
and in the end:How can I recognize where to create this "end"?
self.txt = "".join(self.txt)
How can I recognize where to create this "end"?
def create_event(self):
'''Returns an event depicting the current state of this job.
'''
evt = Event(type='girlreport', imginfo=self.img, txt=self.txt,
girl=self.girl, girlmod=self.girlmod,
loc=self.brothel, locmod=self.brothelmod)
return evt
def create_event(self):
'''Returns an event depicting the current state of this job.
'''
if isinstance(self.txt, list):
self.txt = "".join(self.txt)
evt = Event(type='girlreport', imginfo=self.img, txt=self.txt,
girl=self.girl, girlmod=self.girlmod,
loc=self.brothel, locmod=self.brothelmod)
return evt
Ok, it's done
- replaced self.txt to use a list
- added gold color when it was missing
- enabled titsjob with some lines
- deleted excluding of group/bdsm
Dunno how to see if something improved :)
Is it not possible to set unique girls stats to zero?
...if this is some system limitation, will it be ok to set such stat in her start_id instead?
But something similar, how is "luck" calculated form girls .xmls?
Edit: @CW: Can you push the Next Day report screens you've been working on? I can finish them myself.No, sorry. I didn't work on it yet, so there is so little code that it's not worth using at all.
No, sorry. I didn't work on it yet, so there is so little code that it's not worth using at all.
Should I try to create that screen? I was doing something else, but if you want, I can look into it later this week when I will have some time again.
I don't really understand... if that pic was from the game, you already have the screens and positioning down.Lol, I understand now... Sorry to disappoint you, but that wasn't from the game, it was just photoshoped pic meant as a concept, just like the sketches Overhao drew in early development.
Aaah, ok, now I see :)Sorry... :-[
Well, I could prolly use your sketches for modelling or something. Going to think about it for a while.
I hope you don't think that someone would watch dozens of unsorted events every single turn. Players will skip that screen, end of story.
In wm there is a list of girls at the report screen, where you could select a girl and watch her events if you want to. If there is some kind of important event, the girl will be highlighted with red color.
That's (http://2imgs.com/2i/i/535e8e94/ca8edaad551efb44845ca7802aa8c816/03ba7a5083.f.jpg) what we have now. 27 minor, unimportant, quite repetitive events, one event per screen. If this is not a lack of ergonomics, then what is? Do you seriously watch them all when you play?
I'd say this is the worst system ever.
But right now all events screens are enforced, and this can't be good for everyone.
I told you about hierarchical tree, like on that Cherry's picture. It's similar to wm screen, though not identical. No idea how else we could combine all reports to one screen.
Hello, I have a problem. My character has 80/80 ATK, 62/62 MAG, 10/50 LCK, 67/67 AGI, 70/70 DEF and I don't know how to increase his stats. I have some items equipped but I can actually put'em off and there is no difference, stats look the same. I didn't learn any magic yet, because its too expensive. With stats like this I can only win with "horde of goblins". Thank you in advance for your help :)
Most actions that MC takes do earn experience, with experience levels are increased and with them both stat caps and effectiveness of some items. It's a matter of playing/fighting/interacting and etc.I've just realised that when I lvl up these stats level up with me, so I removed my post, sorry :d But why it's always at maximum?
I've experienced the negative stats during training bug. It seems to relate to armor being worn. For Example, If the MC was wearing the plate armor with -30 agility and then trained with the arena girl; the MC would lose between 20 to 30 agility. Conversely, If the MC had the +10 constitution bracers on and trained with her and the training resulted in a constitution gain, then the +10 from the bracers was added to gain. It was the same with training charisma with the leprauchan girl if wearing the +charimsa coat. I don't know if this will help you figure it out in the code, but it's just what I observed.
* balance jobs profits and salary;
* balance items, both prices and stats;
* improve traits system, right now it seems a bit messy;
* improve tags system;
* balance arena.
What we might need for that from the viewpoint of coding:
* slots of some kind for traits; a purely cosmetic thing to sort traits by types and make girls gui less messy;
* number of uses for misc items; while some of them can be indestructible indeed, others are defenitely not;
* another system for mobs strength based on levels and max stats values, just like for girls and MC; the current system is almost impossible to balance properly unfortunately.
Ok, don't forget upkeep and slave related calculations. Profits/salary are more of a free girls sort of thing.That's the problem, right now slaves can earn the same amount of money, yet they don't need a salary. And it's illogical to force upon them high upkeeps. No matter how much money they might need to keep themselves in shape, free girls still need more becuase they do have a choice, thus they prefer better food, rooms, etc.
Yeah, don't forget that traits are now applied completely differently (effects are not applied at game start but gradually, progressive as girl is leveling up).Could you quote this part of code or specify the place? I forgot the details.
* Stots for traits is prolly an overkill, there aren't that many. In fact there we're even enough categories to split the file (your own opinion btw).In fact I already have them in traits file as comments. I mean general ones, like appearance, mentality, origin, etc. BUT not enough to split the file at the same time.
* We already have that? Do we not?I believe we don't. Right now items are:
That's the problem, right now slaves can earn the same amount of money, yet they don't need a salary. And it's illogical to force upon them high upkeeps. No matter how much money they might need to keep themselves in shape, free girls still need more becuase they do have a choice, thus they prefer better food, rooms, etc.
What we can do here:
- lack of motivation; if you don't pay anything to slaves, they will be much less interested in job (even if trained perfectly), and if you pay them about the same amount of money that you would pay a girl with the same stats, they will do their job as well as free ones;
- slower skills/stats progression; they may need more exp for leveling and/or max levels of stats may grow more slowly;
- hardcoded limitations in equipment; as we know, slaves are not allowed to fight, thus no weapons at very least, plus maybe neck slot should always be filled with a slave collar;
- responsibility before the law; if a free girl commits some crime (attacks a customer for example), your reputation might be damaged, but it's still her own problem; while slaves are your property, if they commit something, it will be only MC's fault from the point of view of the law;
- living rooms; while free girls live somewhere else (we could add an option to settle free characters with high disposition in MC house, but definitely not in brothels), slaves require enough free rooms;
- I'm sure I'll come up with more later.
Could you quote this part of code or specify the place? I forgot the details.
for trait in _traits:
if not self.level%5:
for key in trait.mod:
if key not in ["disposition", "upkeep"]:
if key in self.stats:
mod_value = int(round(trait.mod[key]*0.1))
self.mod(key, mod_value)
The thing is that I'm not satisfied with traits system yet. While that old idea of (iirc) Matt with slots for traits is way too simple even for simpler games, the very concept of more strictly structured traits is interesting and useful for us.
I'll also add general race traits during it, and I believe race traits could actually use a separate slot in any case.
I believe we don't. Right now items are:
1) destructible or not; meaning that either they will dissappear after 1 use or will exist forever;
2) reusable or not; meaning that either one character can use them once or unlimited number of times.
No middle ground.
Sorry if i interrupt this thread but i followed this discussion for a while.
Why dont you make the main difference between slaves and free girls the rank?
Cap the Prostitute Rank of Slave girls at Level 3 so that only free girls can achieve the
higher prostitute ranks and profit.
- I couldn't come up with a good rooms solution other than if you do not have rooms available right now, slaves will slowly be damaged while free girls live at the place of their own.Perhaps another upgrade for brothels, slaves living rooms or something. Minus one upgrade if you want to use slave labor in brothel.
- Higher initial price!Yup, those are good options as well.
- Client preferences (percentage of clients would oppose slavery and be looking for free girls along)
I don't remember what we've decided, will race be a trait in itself or will there be traits available only to unique races?Ok, now that's an interesting concept you suggested here :)
Why dont you make the main difference between slaves and free girls the rank?Yup, great idea indeed. We could also cap reputation and fame for slaves, if it won't be enough.
Cap the Prostitute Rank of Slave girls at Level 3 so that only free girls can achieve the
higher prostitute ranks and profit.
Of course slave girls should be a lot cheaper in upkeep then free girls. Maybe 50%.
Perhaps another upgrade for brothels, slaves living rooms or something. Minus one upgrade if you want to use slave labor in brothel.
Speaking of prices, I'm still not sure if we should add an auction of some kind in the slave market. While a decently coded, interesting and fun auction will be useful for the game, I have yet to see such an auction in h-games. Usually it's just several AI opponents with a simple algorithm. To keep things interesting, some kind of minigame required.
Ok, now that's an interesting concept you suggested here :)
The last time we decided that race will be a trait, and as general one as possible to cover as much as possible, ie for example not dark elf/forest elf/whatever elf, but elven blood for all of them.
Yup, great idea indeed. We could also cap reputation and fame for slaves, if it won't be enough.
The field doesn't do anything, it's just a string. While races could give some small bonuses, like agility for elves, and be flags for various checks. So Cherry suggested to actually use traits here.
* We probably could use both race traits and field. For example, string field Dark Elf and trait Elven Blood for all dark elves.
* Another problem is that race traits and fields might replace Not Human and Alien. Artificial Body is not affected, but those traits are. Moreover, traits like elven blood or furry should be considered as not human, while celestial origin or demonic origin as alien during checks in the code.
Thus, either we'll add another field to race traits, or keep Not Human and Alien and use them on pair with race traits.
* We don't have to use race traits, I can just create a json with general race types and bonuses for them, and when you set race for a character, you also will have to specify a general race type for it.
Maybe make 2 game modes.
One timed mode where you have to pick a time limit at the start.
Something like 200-500 days. At the end of the time limit you get a final score and rank, composed
of the stuff you managed to do in your playtrough. Much like in the Princess Maker Games.
Number of Brothels, Girls, Prostitute ranks , Arena Rank and so on.
This would also give the game a "goal".
That would make "Next Day" spamming pointless because you could spend the time much more efficent by doing other
things.
The second gameplay mode should be a Sandbox Mode without time restrictions. If people want to exploit they could do it there.
This would also be useful as a training mode to develop strategies for the timed modus.
Like before, just a idea that came to mind.
Are you basing those stats increases/decreases on Next Day report or actually checking MC profile screen?
I had posted this in the ST thread, but may have been missed.
Here are some rambling thoughts on types of girls sparked by 'why would you have both slaves and free girls?' Each should have some advantages and disadvantages.
I included a cap to brothel reputation for some girl types - e.g. even if slavery is technically legal, the reputation of a brothel might take a hit for having slaves. This would be no problem for the shack, but would limit the mansion.
Captured/Coerced girls - captured monster girls or adventurers in catacombs or elsewhere, maybe kidnapping free girls. Disobedient.
Cost to acquire - few APs
Jobs- Only usable for jobs when coerced (e.g. chains/collar). No pay.
Advantages - Free. May be sold for a small amount of gold. Raw material for slave training. Can be a rare type (monster girls) or exceptional stats.
Disadvantages - Requires constant supervision/dungeon. Zero Joy/Disposition. Limits reputation of brothel and affects other girls' disposition towards MC.
Bought Slaves - bought at slave market. Obedient.
Cost to acquire - gold (equivalent to about 100APs in the beginning).
Jobs- Basic jobs. No pay.
Advantages- Easy to manage. Will do any job. Giving optional payment or attention can improve joy/disposition to a point.
Disadvantage- Limit to Disposition/Joy maximum (maybe 50%). Low to Average stats. Limits brothel reputation maximum.
Free girls - become employees. Disposition is important for obedience.
Cost to acquire - APs/gold. Should only require a few APs for their 'desired' job, but lots of APs/gold to increase disposition for undesired jobs.
Jobs- only the ones they want to do. Fair pay. Maybe they can be convinced to enter slave training voluntarily (exceptionally high disposition? supporting an addiction?)
Advantages- Better girls (higher stats). No limit to joy/disposition. No limit to brothel reputation.
Disadvantages- requires fair payment (lower profits).
Trained slaves - either a free girl or captured girl trained to be fully obedient
Cost to acquire - many APs to convince a free girl to enter training. No cost for captured girls. Many APs to actually conduct training.
Jobs - No pay. Unique jobs available (ponygirl/catgirl).
Advantages - Can train a higher stat girl than usual for some jobs. No limit to brothel reputation. Can be sold (but probably not cost effective due to high APs required).
Disadvantages - Time to train.
Low level brothel: trained or bought slaves and coerced girls as prostitutes
Medium level brothel: free girls in some jobs (service/stripper, rarely prostitute), trained or bought slaves as prostitutes (or stripper/service)
High level brothel: free girls and trained slaves in all jobs[size=0.85em][/size][size=0.85em][/size]
As for hitting 'next day' as an exploit. Why worry about it? If a player wants to play that way, let them. I think it's pretty boring to do that. If you just want some extra cash, it's easy to edit the files to start with tons of cash. While useful for testing the range of the game that's no fun to play (for many of us). If someone wants a lot of cash to do something else they want to have fun doing, let them. :)
Right, first of all force to spend at least 1-2 AP before next day.
Maybe add a negative effect if MC doesn't leaving the brothel (or house) for a prolonged period, like claustrophobia or something. Or decrease fame over time for example, hermits are usually not popular.
In the future I'd like to have global goals that have nothing to do with pure amount of money, and that will become only more difficult if you wait too long. Thus, feel free to save up some money if you want, it's not like they will help you with everything :)
Actual MC stat changes. It is actually a bit of an exploit to quickly gain constitution and charisma. It only occurs if the training effects those stats. It take a little save scumming to get the constitution increase, because of the rarity of training increase for that stat.
Actual MC stat changes. It is actually a bit of an exploit to quickly gain constitution and charisma. It only occurs if the training effects those stats. It take a little save scumming to get the constitution increase, because of the rarity of training increase for that stat.
I've been searching the forum but for the life of me, I cannot figure out how I get guards. Any clues to this?
Thanks!
You need to go through girlsmeets with a Warrior type (In the city), once she knows you well enough (might take a while of talking/giving gifts), she'll agree to work for you (as a guard or teammate for combat in the arena).
Just wanted to toss an idea your way.
In order to address the Next Day exploit, why not tweak the chances for customers to attack the girls? Also, you can tweak the damage that is taken during those events. Then, you could have those values change, based on difficulty level (when implemented).
This way, if someone tried the Next Day exploit on the harder difficulties, they will soon find themselves bankrupt due to the fact that their girls are all spending their time resting from their wounds. Of course, someone playing on the easy difficulty would be able to use the exploit, but normal and hard difficulties would only be able to use Next Day for about a week.
You would also have a decent money sink in healing potions, on the harder difficulties.
I'd prefer to keep warfare outside of brothel :)I do agree, but does this mean you are doing away with the Guard job? All I'm suggesting is to tweak the frequency of existing events.
I do agree, but does this mean you are doing away with the Guard job? All I'm suggesting is to tweak the frequency of existing events.
But, I do see your point. This is a brothel sim, not a tactical war game lol.
While on the subject, what if girl rank and free/slave status affected the chances of being attacked? For example, A beggar would be willing to attack a rank 1 slave, but not anything rank 4 and above. Also, a noble would be willing to attack a rank 8 slave, but less likely to attack a rank 8 free girl.
Anyway, on a different note, here's another concept for addressing the Next Day exploit.
I've read some of the other posts on adding BDSM into the game. While I do agree on what would need to be done, in order to incorporate BDSM, I'd like to run this idea by you.
The BDSM sex act should have increased fatigue gain, some loss of health or both. I'm thinking of another game (probably SimBro), where 1 BDSM act would take a girl out of work for a couple of days. Now, I'm not saying that you should directly copy that, but it is an interesting idea to use.
You could start off with something like 3 BDSM acts are enough to put a girl on auto-rest. This would cause players to utilize Incense of Serenity and Healing Potions, in order to stay in operation.
However, the player should be able to mitigate this with the use of brothel upgrades, items or both.
An example for the brothel upgrade would be different levels of BDSM equipment. The use of quality equipment would cause less harm to the girl.
For an item example, I'd say the slave chains. Since the girl is already restrained, the customer doesn't have to get rough with the girl in order to restrain her. A good upgrade would be something like Fuzzy Handcuffs, which would still restrain the girl, but won't cut into her wrists (thus, she takes less damage).
All in all, this would prevent players from using the Next Day exploit, until they have their brothel firmly established. Once they're at that point, then there isn't much of a need for them to use the Next Day exploit.
Well, I just thought I'd run this by you. Of course, this idea can't be utilized if BDSM isn't implemented. But, if you ever do implement BDSM, then this might help.
I should really make this into a signature, but feel free to use, abuse or make fun of my suggestions. ;D
There is/will be combat, just shouldn't be in a brothel. I am not disregarding the guard job since there is always a chance of unruly customers in borohel/stripclub/bar. I simply don't want to make something crazy out of it. I don't like the idea with the different ranks not attacking one another, seems a bit out there.Not as out there as you might think. With any society, there is corruption in the upper levels and with the justice system. What I was thinking is that, the lower class citizens would fear reprisal if they tried to hurt everyone's favorite courtesan. However, they wouldn't be so afraid when it's a low class slave. In contrast, the upper class citizens wouldn't expect to be punished, or would expect to get off with a light sentence, no matter how they acted.
It's a decent idea... BDSM similar to SimBro 1X where a specialized upgrade was required and it meant a great deal of money at once. This at cost of disposition (unless traits are applied), joy (same) and fatigue...Yay! I finally came up with a good idea! I gotta mark this on the calendar! :D
Yeap, this could be a way to go...
Any progress with the dev mode?
Somehow Nico has -5 upkeep. Probably too many good traits, but it's ridiculous anyway, she shouldn't pay you for her own upkeep. Should be no less than 0.
The whole message looks strange. If upkeep is 0 or less, there should be another one that she does not need it, or maybe no message about upkeep at all.
Slaves or free ones that will live in MC house or something could actually pay the negative upkeep value, but not salaried workers.
Ok, that's how it should work: we summarize all upkeeps, both positive and negative, and then MC pays it. If after summation upkeep will be negative or zero, he doesn't pay anything and doesn't get gold too.
From the viewpoint of gui the message should be something like "she helped you save N gold on upkeep" or something like that, not "you pay -5 gold", because it gives the impression that MC just got pure gold out of nowhere.
Of course there should be another message for 0 upkeep.
From the viewpoint of gui the message should be something like "she helped you save N gold on upkeep" or something like that, not "you pay -5 gold", because it gives the impression that MC just got pure gold out of nowhere.
Of course there should be another message for 0 upkeep.
You cannot just summarize all their upkeeps and normalize them before actual payment, despite the fact that the game calculates and stores them every turn? How is it even possible?
I tried to test high level girls, but the game seems to ignore the exp field in data files. I told you we need a normal, "level" field :)
chr.exp += 10000000
for girl in hero.girls:
girl.exp += 10000000
I'm not sure what is going on with bar income. Girls that don't have much difference in skills get very different amounts of money per shift.
clientsmax = self.APr * 4 + (self.girl.agility * 0.1 + self.girl.service * 0.2)
barfees = int(clientsserved * 0.5) * self.APr * int(self.girl.refinement * 0.2 + self.girl.charisma * 0.2 + self.girl.service * 0.2)
tips = 0 # Will be 0 - 15% of the total bill depending on girls skillz and looks.
if tapas:
barfees = barfees * 1.5
elif beer:
barfees = barfees * 1.2
# Skill checks
if self.girl.service > 300:
self.brothelmod['reputation'] += choice([0, 1])
barfees = barfees * 1.5
tips = barfees * 0.10
self.txt.append("She was a godlike bartender, customers kept spending their money just for the pleasure of her company. \n")
I do not have time right now to tamper with my favorite photoshop, but I keep an eye on your progress for future updates, I do not know how to say it in English so I would say in French:
"J en ai l'eau à la bouche."
Literally: I water in the mouth.
I'll take out the definition : ;D
When you're hungry and you face a dish that you particularly like, habitual physical reaction is to get to salivate. It is this phenomenon known what came of all this expression, which is used since the fifteenth century in various forms.
You could try to improve arena fights indeed. I did the best I can to balance them with the current system, so maybe you could try to change the system a bit.
I'm in a loss. It's not unusual to see one service girl with 2 gold and another with 150+ with about the same stats. I don't think it's the tips formula, more like uneven distribution of customers or something.
I have no idea how to balance bar tips with that kind of scatter.
Do it, I'll test them and change if needed. I'll begin to balance traits meanwhile.
I'm going to increase traits level cap up to 100, and make them a bit stronger to compensate it.
So, what should I do with races, should they be traits or a separate json with races names and bonuses?
We'll need more minigames in the future anyway, consider it as training :)
[
{
"id": "Trait Name",
"desc": "Description",
"effect": "Effect",
"block_traits": ["Tough", "Fragile"],
"stats": {"mod constitution": 30, "min constitution": 30, "max constitution": 30}
}]
Will traits json like this be alright btw:
class Trait(_object):
def __init__(self):
self.desc = ''
self.temp = 0
self.mod = dict()
self.max = dict()
self.min = dict()
self.blocks = list()
self.effects = list()
[
{
"id": "Trait Name",
"desc": "Description",
"effect": "Effect",
"block_traits": ["Tough", "Fragile"],
"mod": {"constitution": 30}
"min": {"constitution": 10}
}]
init python:
t = Trait()
t.id = "Trait Name"
t.block_traits = ["Tough", "Fragile"]
You mean vn-like background, or something like a map?
My db\Images\Backgrounds\city has plenty of elite and medium wealth pics. For ghetto you could look into ruins, village, maybe canyon folders.
<mod charisma = '20' />Thus, at higher levels the girl will have more charisma and less agility than at level 1? That seems a bit illogical from the viewpoint of learning, either penalties should be reduced over time, or be there in full from the start. I personally vote for the second option.
<max charisma = '20' />
<min charisma = '20' />
<mod agility = '-20' />
<max agility = '-20' />
<mod strip = '-15' />
<max strip = '20' />
Thus, at higher levels the girl will have more charisma and less agility than at level 1?
[
{
"id": "Elven Blood",
"desc": "This girl is of the elven race.",
"mod": {"constitution": -10}
"min": {"agility": 10}
}]
Because she learns how to use her breast to increase charisma and how to not lose agility thanks to it at the same time.
But you probably right, I'm not sure how to balance it in the beginning too.
I'm going to create a json for races. It will be something like
In case of mixed race we probably should allow two or more races at the same time, with bonuses and penalties
reduced twice of more. So in gui in case of half elf it should be something like "Elven Blood/Human", with const -5, agil +5 and for example reputation +5 providing that a pure human will have reputation +10.
This cannot be achieved via traits system, obviously.
is there a function to buy in bulk from the shop ?
Either you should explain it to me, or something is not right in the code.
What is the difference between bar_task(self) and club_task(self)? They use very similar code AND no matter what I change there it has no effect whatsoever on service girls income.
It wasn't like that with other jobs, they were coded much clearer :D
I know the theory. I don't understand the code. I just multiplied both clubfees and barfees by 10000 for testing and it didn't change anything in the report. At all.
With other jobs it was clear what to change to have different income/wage, but not here.
clubfees = int((clientsserved * 0.6) * self.APr * int(self.girl.agility * 0.2 + self.girl.charisma * 0.2 + self.girl.service * 0.2))*10000
barfees = int((clientsserved * 0.5) * self.APr * int(self.girl.refinement * 0.1 + self.girl.charisma * 0.1 + self.girl.service * 0.25))*10000
My usual testing to determine the right formula :)
Ah, that explains it. I thought you deleted the old code completly, so I blindly used searching option to find def bar_task(self) string, and the first one is the old one. My bad :)
Pushed another balance update, economics should be fine for now.
A ->good<- club girl will have much more than 8, providing that she has enough customers. Lvl 14 girl with 50 charisma/refinement/service will have 50-150 per shift depending on the number of customers and AP. And 14 is not even close to really high levels.
Basically, I don't want bad whores/waitresses/etc with 0-10 stats to be good, self-sustaining workers. You have to train them or find and convince to join some good ones (when we finally will have levels in girls data files).
Also, since only whores have such a thing as ranks, they should make the best profit, and they do even now.
I believe it's called denomination. We always can reduce upkeep and wage if the game will be too difficult, so there is no need to keep high income only for that.
Providing that you need about 10-15 gold per day to survive according to the current concept, about 10 per day for someone who cannot properly do anything at all is more than enough.
... I think when you'll finish and I wrap up the realtor, we may release an "unofficial" release so people could test new stuff and get some feedback.
Cool!!
If possible, made sure we can change the images of personages or background of the game with a folder.
As before, you change all the code, I can do my little request ^ ^
But for the player, NPC, object, background if you could keep it as before.
What is the max for brothel reputation?
I'm going to add brothel fame to income formulas, it seems quite reasonable to me.
And what about other brothels?
but I have no idea if I ever get around to creating blueprints for clients of different castes and noone else wants to do it.I want to do it, and I'll do it after traits and jobs balancing :)
{
"id": "Elven Blood",
"desc": "This girl is of the elven race.",
"mod": {"constitution": -10},
"min": {"agility": 10},
"traits" : {"Not Human"}
},
{
"id": "Undead",
"desc": "This girl is basically dead.",
"mod": {"constitution": 10}
"min": {"charisma": -10}
}
]
Everything seems to work for the most part, trying to reproduce a barfight error I got so I can post the notes on it.
I hope in the future there are alot more areas to explore to meet girls since finding the ones you want can be hidden behind other girls you have to hire to make room for more.
Also, when does the inventory reset in shops and will there be a way to control the occurance of high end items for later in game without file editing.
I guess we could use healers then? I recall some plans involving healer occupation at the beginning of development. Though whole occupation is an overkill, I think.
In simbro there are traits like medic/chakra medic.
Let's clarify some logic behind stats again, in case if something has changed.
I can discrease and increase max health via traits.
I can increase min fatigue, so a weak girl will never have 0 fatigue (perfectly rested).
I can change max fatigue, so a girl either will have less or more max fatigue than other girls, thus gets tired faster or slower.
I can change upkeep via json the same way, "mod": {"upkeep": 10}. And upkeep does not depend on level, like other mod stats.
Right?
Yeah, I know.
If you worry about events stat checks and min values, well, it could cause troubles indeed, so it might require some additional coding, like ignoring min values in some cases. But it seems quite reasonalbe for some traits, especially for fatigue/joy.
Possible effect for tsundere trait: with disposition 900 or more trait works in reverse.
Meaning that if with low disposition it gives
"mod": {"character": 40, "blowjob": -20, "service": -30, "upkeep": 15},
"max": {"character": 20, "blowjob": -10, "service": -20},
then with high it gives
"mod": {"character": -40, "blowjob": 20, "service": 30, "upkeep": -15},
"max": {"character": -20, "blowjob": 10, "service": 20}
Um, I don't understand your question.
No idea why do you want some additinal system to report race to the field depending on traits.
To make it work perfectly even now we'll need a couple of new traits.
To make it work perfectly in the future we'll need dozens of new traits.
I suggest to use two fields in girls data files, race and base_race. Race is an arbitrary string, base_race is that human/elf/monster system that you proposed and that can be expend in the future.
Alright, and how are you going do divide angels from demons (Alien), or elves from slimes (Not Human)?
Lol, I told you about two fields just now. Why create dozens of traits only to check them once when you can use 1 new simple field?
I thought about race traits system, but it quickly becomes too complicated in case of crossbreeds. I guess we could use base races as traits, but it will be too confusing for players if for example some dryad will have Elf trait out of nowhere.
So two races system is our best bet.
About tsundere effect, how difficult it will be to code flat and simple "mod": {"character": 20, "blowjob": 10, "service": 15, "upkeep": -5} for disposition > 800 no matter the current level? Is it too messy too?
Do you want to create a team from player's girls only? Or it will be possible to include there any willing warrior girls (for a fee, and to raise disposition during adventures)?
What bothers me here is that all that code required for exploration will be useless after we'll add EE. Providing that we will add it.
At the same time I'm not sure how to handle EE at all. The game has, or at least can have hundreds, if not thousands characters (mgirls, rgirls, clones).
When you explore some dungeon with a very small team in real time every turn, you are separated from the main part of the game, you are not a manager anymore, you are a performer.
So on the one hand we have autonomous exploring teams, on the other hand we have party EE. From the viewpoint of efficiency teams are better.
Maybe if we'll add some kind of EE eventually, it should be more global than one dungeon with two girls in party per time. Like in some turn-based strategies, where you explore territory via menu rather than personally.
If the time will permit, today I'll do more balance stuff and begin customers sheet.
Can you have more than one house if needed? I guess we could use such an option if houses will have limited rooms or something. Or maybe not, if it will be too messy.
About exploration, what do you need there? Dungeon name, level, races of girls that could be found there, gold? Because if you need items list too, well, maybe I should rework items for a start.
Can you have more than one house if needed? I guess we could use such an option if houses will have limited rooms or something. Or maybe not, if it will be too messy.
About exploration, what do you need there? Dungeon name, level, races of girls that could be found there, gold? Because if you need items list too, well, maybe I should rework items for a start.
Come to think of it, limited money will effectively prevent too high income. Especially with some basic algorithm, when a poor customer either goes to bar or hires a whore because he cannot afford both.
Dammit, stop ignoring my question about multiple MC houses :D
Yes, but there is no point in that right now.
Instead of other homes could you add a second set of options for upgrades to the brothels for the main characters room even maybe a bathing area for the girls. Also make-up gets to be a hard thing to keep up with over alot of girls, would it be possible to add cosmetic slots to the inventory screen to equip makeup, perfume, and maybe add a body care slot for lotions, bath oil, hair care sutff. These would act like normal equipment items and give thier full bonus when equiped but have a gold upkeep modifier to account for replacing used items in the kits.
Hi there,
if you think about adventures that tooks some days for the MC. Maybe you could appoint one of the free girls to be the Brothel Madame who is in charge of the Brothels.
Now we just need to load them into the game :)
INFO PyTFall 0.47 Alpha Loading: Characters
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: hino_rei!
WARNING PyTFall 0.47 Alpha Unknown trait: Old Scars for girl: katsuragi_misato!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Izayoi_Sakuya!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Kurenai_Yuhi!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Kochiya_Sanae!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: T-elos!
WARNING PyTFall 0.47 Alpha Unknown trait: Egocentric for girl: Menace!
WARNING PyTFall 0.47 Alpha Unknown trait: Egocentric for girl: Cloche_Leythal!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Cloche_Leythal!
WARNING PyTFall 0.47 Alpha Unknown trait: Puffy Nipples for girl: Minako_Arisato!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Mei_Terumi!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: meiou_setsuna!
WARNING PyTFall 0.47 Alpha Unknown trait: Egocentric for girl: Angela!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Shizune!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Rise_Kujikawa!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Asuna!
WARNING PyTFall 0.47 Alpha Unknown trait: Egocentric for girl: Nanael!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: Riesz!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Mitsuru_Kirijo!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: Tear_Grants!
WARNING PyTFall 0.47 Alpha Unknown trait: Puffy Nipples for girl: Kushina_Uzumaki!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Kushina_Uzumaki!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: Samui!
WARNING PyTFall 0.47 Alpha Unknown trait: Puffy Nipples for girl: Samui!
WARNING PyTFall 0.47 Alpha Unknown trait: Puffy Nipples for girl: Yukari_Takeba!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: horaki_hikari!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: Cheria_Barnes!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Ino_Yamanaka!
WARNING PyTFall 0.47 Alpha Unknown trait: Old Scars for girl: Anko_Mitarashi!
WARNING PyTFall 0.47 Alpha Unknown trait: Sexy Air for girl: Temari!
WARNING PyTFall 0.47 Alpha Unknown trait: Cool Scars for girl: Karin!
WARNING PyTFall 0.47 Alpha Unknown trait: Hyperactive for girl: Kula_Diamond!
WARNING PyTFall 0.47 Alpha Unknown trait: Mature for girl: shoukaku!
WARNING PyTFall 0.47 Alpha Unknown trait: Puffy Nipples for girl: Melona!
WARNING PyTFall 0.47 Alpha Unknown trait: Sexy Air for girl: Melona!
WARNING PyTFall 0.47 Alpha Unknown trait: Charismatic for girl: Tsunade!
INFO PyTFall 0.47 Alpha It took 0.315999984741 secs to execute!
INFO PyTFall 0.47 Alpha Loading: Generating Random girls
WARNING PyTFall 0.47 Alpha Trait: Cool Scars for random girl with id: Dark_Elf is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Cool Scars for random girl with id: Soldier is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Noble_Elf is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Hyperactive for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Leafa is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Cool Scars for random girl with id: Dark_Elf is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Cool Scars for random girl with id: Dark_Elf is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Noble_Elf is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Egocentric for random girl with id: Angel is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Leafa is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Puffy Nipples for random girl with id: Priest is not a valid trait for this game!
WARNING PyTFall 0.47 Alpha Trait: Charismatic for random girl with id: Adventurer is not a valid trait for this game!
INFO PyTFall 0.47 Alpha It took 0.286000013351 secs to execute!
@ CW:I had too much RL stuff so I did nothing for the game... I should have time again after one week from now, I hope...
You've been very quite lately?
I don't mind converting girls files either.I had too much RL stuff so I did nothing for the game... I should have time again after one week from now, I hope...
Not sure if it was brought up yet or not, but my service girls and strippers are getting close to 250 customers per action causing tons of dirt to build up for each action, this reaches around 1000 per action. Seems dirt is per customer and not event, matbe have strippers generate dirt based of happy customers and service not at all since cleaning is something they are supposed to do while they work. It can get costly quickly calling in the cleaning crews after every action they work.
Hey, don't know how far along you are till the next update, but I pretty much finished everything, killed all the survival stuff, massed up a ton of items and girls, got the palace to see what it has, could have about 15 level 8 girls in it but will wait before that..
A couple of gameplay problems, girls seem to start making levels like crazy after about level 40 I think, I don't remember exactly, but they don't require any rest because of that, also max stat level rises like crazy at certain points and it get's too difficult to train them and maintain them, unless I ignore my hero and just next and save up money while in training, whatever the choice it became a click / next fest real quick. Arena has no more purpose once you kill the final survival thing because it's just next next next... nothing meaningful and the money I get from my 15 high level girls is more than enough for anything I would want. No point in playing at this time.
As a bug, for taxes, if you sell the brothel before you click next on the tax day, you get to keep any tax money you would have owed, for me it was like 150000... and with the upkeep of the girls I would still keep a big portion of that.... I can't imagine how advantages it would be later on. I hope it's not intended.
Another bug, if you move the file the game loses the location for the sprite of the main char in the arena... a bit annoying since I now have to keep it in the same place, probably works for new games, didn't try.
Item management also sucks at late game stages, we as players could really use something like equipment per action. as in if a stripper is working she has all equipment on, and if she is training she has it off so she can level up... also when you have so many girls keeping track of whatever they have on is hell to deal with, that takes most of my playtime actually, same goes for my hero, if I want to talk to a girl I need charisma items, if I want to fight I need fighting items, if I need to click next turn I need to change to constitution items, another time sink. Time sinks that have low gains and repeat often make the game play feel worse than it should. Idk how you can fix it with the system but it could be usefull to think about these issues in the future at least.
Also the training money sink sucks from level 30-40 till like 200 when you can afford it and not care, actually at about 150-200 the game starts being pointless anyways so from level 30 we can kiss training bye bye... it would be usefull if we could pick a stat and pay more depending on how much we would want to level it up, I don't feel like having it has a money sink really serves much of a real purpose, at least at the current setting the income is either too low or too high to justify the logic. I found myself either being unable to use it at all or very little, using quicksaves since I was low on money, or use it a lot and not give a damn about results when my income got too high to care.
As a final short complaint the filters for the girls deactivate once you leave the screen which is not ideal at all, but from what I read it might not be necessary to do so judging by the looks of development. however it would be nice if we could have a checkbox somewhere and send 15 girls at a time to a training school instead of going through it 15 separate times.
And one last thing, I save 150.000 gold if I sell the 175.000 brothel before taxes since I only have to pay girls upkeep and salary, with a wooping 1.700 gold for slaves owned taxes. That is a lot of money even with the 20% because you are no longer taxed on your girls income either, since the brothel is gone. Is that really intentional? I mean I want to be clear, all the taxes are reduced to 1.700 gold from 140.000 gold + If I sell it.
In other words... it might be nice that the girls in the world level with you, at a lower pace maybe but it would be better than having to start over with x number of girls on each new brothel.More like there should be both low and high level girls rather than only low level ones.
More like there should be both low and high level girls rather than only low level ones.
Ok, I'm back.
But not sure what to do now...I kinda lost track of where we are with the game... is there something easy for a start?
What do you plan to use disposition for? I mean, for general gameplay... I would like to get better estimation of how much effort and complexity is worth doing there, because for example, I feel that gm for alpha was totally off (too much time for little value).
[
{
"id": "Simple Training Dummy",
"desc": "This low quality, straw dummy helps to keep fit a little, but do not expect it to be useful for professional Combat Training.",
"icon": "content/items/misc/std.png",
"price": 2550,
"sex": "unisex",
"chance": 55,
"badness": 80,
"hidden": true,
"infinite": false,
"slot": "misc",
"type": "upgrade",
"mtemp": 1,
"mreusable": true,
"mdestruct": false,
"cmax": 50,
"mod": {
"constitution": 1,
"fatigue": 2
},
"location": [
"Work Shop"
],
"badtrait": [
"Fragile",
"Athletic",
"Artificial Body"
]
}
]
Every girl would start from neutral. Growth or decline would be determined by the MC interactions and work types assigned to girls.Yup, unless stated otherwise in girl's data file or by scripted events. Like when you saved someone from bandits or for example forced a girl to work for you somehow.
Yup, unless stated otherwise in girl's data file or by scripted events. Like when you saved someone from bandits or for example forced a girl to work for you somehow.
I'll have to rework every single item. Might as well convert them.
Btw where should I look for stats min/max values in the code since I keep forgetting them? I guess it's somewhere in the classes - characters, but I cannot find it.
### Stats:
stats = {
'charisma': [0, 0, 100, 60],
'refinement': [0, 0, 55, 35],
'libido': [0, 0, 100, 100],
'constitution': [0, 0, 60, 40],
'joy': [0, 0, 100, 100],
'character': [0, 0, 100, 60],
'reputation': [0, 0, 100, 100],
'health': [100, 0, 100, 200],
'fame': [0, 0, 100, 60],
'mood': [0, 0, 1000, 1000],
'disposition': [0, -1000, 1000, 1000],
'fatigue': [0, 0, 300, 300],
'intelligence': [0, 0, 100, 60],
'luck': [0, -50, 50, 50],
'attack': [0, 0, 60, 40],
'magic': [0, 0, 40, 30],
'defence': [0, 0, 50, 40],
'agility': [0, 0, 35, 25],
'mp': [0, 0, 40, 30],
'service': [0, 0, 100, 60],
'anal': [0, 0, 100, 60],
'normalsex': [0, 0, 100, 60],
'blowjob': [0, 0, 100, 60],
'lesbian': [0, 0, 100, 60],
'strip': [0, 0, 100, 60]
}
Wait a sec, so we don't have any hardcoded absolute maxes? I mean, at least disposition probably could use it.
Btw, for now many powerful items can be found in "Forest" only, basically a placeholder for alpha, so they were not tested by players, except those few who were able to win a thing or two at arena.
There shouldn't be any major errors, but you never know. We have to make sure that all items will be available in the next public version, probably with the help of your basic exploration system.
Btw, for now many powerful items can be found in "Forest" only, basically a placeholder for alpha, so they were not tested by players, except those few who were able to win a thing or two at arena.
Hey Xela,
I only wanted to ask you: When do you think we can expect a new update? =)
First of all, refuse lines. What is the difference between "if ct" part and "if "X" in chr.traits"? They seem to have the same purpose, yet they use different syntax.
I'm trying to revise interactions now and I'm seriously thinking about reducing the girlmeets a lot by striping it off most of the options and do the whole thing a bit differently. And part of that would be rewriting the whole file anew, cause it's a total mess right now.
...but lining up out even the first concept to share thoughts with you is giving me headaches...
Oki, I'll refrain from modifying the current file then and focus on items for now. I noticed that we don't have lines for all existing traits while I have some ideas for them, but in this case it might be pointless if you will remove whole sections.
Nah, we have 81 traits, less than SimBro btw. There is no way to significantly reduce their number, we could delete maybe 10-15 at best while significantly reduce the diversity for existing and future modules, but if you hope for 20-30 traits then it's impossible.
In simbro many traits have like 1-2 checks AT ALL, and they still serve their purpose well. In our case I'm going to remove stats from many traits as we'll add more meaningful checks and effects, because for now stats is the only way to show somehow that they are working.
Good examples are loner or always hungry. They might have some tiny effect on stats, but they should be scripted with the help of new systems like girls relationships or autobuying system in the first place.
Meanwhile we already can use them for a couple of checks here and there (I already do), and it won't hurt anything.
I have some ideas for pretty much every trait, I mean both interaction lines and code checks. The problem is, as you can see, a lack of a stable framework. I can't even write those interaction lines because the meeting system is not ready for that :)
Cherry just mentioned that he is going to rework interactions completly, "do the whole thing a bit differently", "cause it's a total mess right now". That's rather major obstacle for adding new lines, if you ask me.
As for multiple checks, I'd say there are cases when they have a lot of sense (artificial body + impersonal = very robotic lines), but of course we shouldn't check every possible combination. Random choice is enough, until we will have a dozen of writers at least :)
Moreover, we might use a couple of base_race-based, not trait-based lines to diversify things. After you will load my base races json into the game.
xela, darkti .... a little suggestion ^^
if you two guys are almost equaly online .... why dont you use skype or something like that to improve your ideas via voip? .... i thought maybe the idea-exchange would work worlds better this way as you both can explain your ideas much better
And in fact we both speak the same native language that isn't English :) .Yeah, that's rather unusual situation to say at least :D
Girlmeets:
I know it's kind of late, but I feel that GMs that rely on seducing girls to recruit them for job is just a bad idea. It looks fine at start, but just imagining that you may later want to have, let's say, 50 free girls, and need to go through the same for each of them... no, just no.
SO...for recruiting a new girl, I think we should stay mostly within persuasion only (without all these kisses and such) as requirement to hire a girl.
I'm imagining:
- questions to figure out more about her (her traits, possible profession, class and experience - basics are in gms already)
- persuasion (putting MC charisma and other skills to use together with your business fame/infame, buildings owned...etc)
- plain money offer (you just promise her so much so it will be hard to refuse you)
- threatening/drugging/kidnap whatever if we decide to add some evil routes
And disposition only helping a little with this.
For every girl that goes in, they would need to be made so as to line up with the new system, and that will put more work on the girl creators and modders because not only do they have all the work they have now to make them work, but they will need to be able to come up with (Possibly) unique lines and phrases for each outcome. Add to that with the random levels, while somewhat easy to do, will be harder to work because some girls are always weaker than others in their various cannon, so it will require that to be included aswell.Sorry, that might be possible for EA maybe if they would agree to make free open source hentai games instead of Sims, but definitely not for us :D
Ok, let's separate girlsmeets and dating system then. When you just try to hire a girl, there shouldn't be things like kissing.I'm still figuring how to do that so it's not totally boring to play. With complete separation we would probably lose to much atm, as there's nothing interesting yet to replace the interaction part... (something like wage negotiation).
All character uniqueness that girls have is provided by traits and base race. There is nothing new for creators and modders.
As for unique lines and phrases for each outcome, I believe we might need different lines for various traits and disposition levels.
While running game code:
File "game/library/screens/pyt - screens - nextday.rpy", line 125, in script
with dissolve
File "game/library/screens/pyt - screens - nextday.rpy", line 352, in <module>
text ("%d" % len(list(girl for girl in guards if girl.action in ("Rest" "AutoRest")))) style "next_day_summary_text"
File "game/library/screens/pyt - screens - nextday.rpy", line 352, in <genexpr>
text ("%d" % len(list(girl for girl in guards if girl.action in ("Rest" "AutoRest")))) style "next_day_summary_text"
TypeError: 'in <string>' requires string as left operand, not NoneType
I'm sorry, but an uncaught exception occurred.
While loading the script.
AttributeError: 'module' object has no attribute 'Style'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\bootstrap.py", line 254, in bootstrap
renpy.main.main()
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\main.py", line 203, in main
renpy.game.script.load_script() # sets renpy.game.script.
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\script.py", line 177, in load_script
self.load_appropriate_file(".rpyc", ".rpy", dir, fn, initcode)
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\script.py", line 436, in load_appropriate_file
if self.load_file(dir, fn + compiled, initcode):
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\script.py", line 310, in load_file
data, stmts = self.load_file_core(dir, fn)
File "C:\Games\Downs\renpy-6.15.0-sdk\renpy\script.py", line 288, in load_file_core
data, stmts = loads(f.read().decode('zlib'))
AttributeError: 'module' object has no attribute 'Style'
Windows-Vista-6.0.6002-SP2
Ren'Py 6.15.4.320
^I could, if you clarify what do you mean by multiplier here.
Btw, looks like we have a fully translated Artificial Academy 2 available on ponolab and hongfire. There are a lot of interesting ideas, including dialogue topics.
I guess we need several different jobs for different occupations. Though it's kinda hard to come up with something for whores other than actual whoring.
About gladiators. You guys are thinking something like the Spartacus TV series or something more like a brawl fighting style from Fight Club – people fight but no one’s dies?We don't want all unique warrior girls to die in first two months before players can even meet them, all those packs will be in waste.
I don’t see a reason why should someone employ themselves in the “MC Empire” while he would be assign as a city guard. Why just don’t skip the middle man? The same goes for Thieves. Why a FREE girl should split the loot with the MC when she haves the skills to pull the job herself?Because MC has power, money, allies, real estate, high charisma stat, etc. :D
Adventurer maybe something more like an explorer that comes up to the MC to fund an expedition? Long term investment with high risk but also high profits chance. I’m saying this because it’s hard to imagine a situation like this: MC gives a backpack to a slave girls, some pocket money, map and say to her “Go and explore” ; she would surely return… NOT.Slave girls cannot be warriors.
The jobs are not for the MC girls, they are for free girls that are not in MC's service. Girls will earn money and in the future spend money even when not employed by MC. Their job status will also decide in part if they want to join MC in one of his businesses.
Items are almost finished. Pushed json with girls jobs. It has both multipliers and main stats for every job. I'm not actually sure what to do with main stat, maybe girls with this job should have a little bonus to it, maybe it should be required for job checks, maybe both.
After that, we should think about how the city is organized. Do we have a single person in charge (mayor, king), or a group of person that are in charge (aristocracy).
If someone would like to actually write a good detailed city concept, not just discuss it in general, feel free to do it. Since we don't have it, we could use any.
As the "detailed city concept" you mean something like a whole structure for a city state to actually work? Like economics, population presented in numbers, ethnics, social status, food providing, military system, mayor/minor trading goods, etc?
I mean we could use descriptions and prehistory for those general areas, just like we have for the whole city. Also, we already need descriptions for elemental alignments, because elements are in the game with a placeholder instead of descriptions. I have Descriptions.txt in my db, but they are just rip-offs from other games, original texts would be better.
Will get to writing this right away.
# Magic alignment:
# Target:
if ('fire' in attributes):
if ('water' in target.Attributes):
multiplier = choice([0.4, 0.5, 0.6])
elif "air" in target.Attributes:
multiplier = choice([1.5, 1.6, 1.7])
elif ('fire' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
pass
else:
multiplier = choice([1.2, 1.3, 1.4])
if "fire" in attacker.Attributes:
multiplier += 0.5
elif "air" in attacker.Attributes:
multiplier -= 0.5
if ('water' in attributes):
if ('earth' in target.Attributes):
multiplier = choice([0.4, 0.5, 0.6])
elif "fire" in target.Attributes:
multiplier = choice([1.5, 1.6, 1.7])
elif ('water' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
pass
else:
multiplier = choice([1.2, 1.3, 1.4])
if "water" in attacker.Attributes:
multiplier += 0.5
elif "earth" in attacker.Attributes:
multiplier -= 0.5
if ('earth' in attributes):
if ('air' in target.Attributes):
multiplier = choice([0.4, 0.5, 0.6])
elif "water" in target.Attributes:
multiplier = choice([1.5, 1.6, 1.7])
elif ('earth' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
pass
else:
multiplier = choice([1.2, 1.3, 1.4])
if "earth" in attacker.Attributes:
multiplier += 0.5
elif "air" in attacker.Attributes:
multiplier -= 0.5
if ('air' in attributes):
if ('fire' in target.Attributes):
multiplier = choice([0.4, 0.5, 0.6])
elif "earth" in target.Attributes:
multiplier = choice([1.5, 1.6, 1.7])
elif ('air' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
pass
else:
multiplier = choice([1.2, 1.3, 1.4])
if "air" in attacker.Attributes:
multiplier += 0.5
elif "fire" in attacker.Attributes:
multiplier -= 0.5
if ('light' in attributes):
if ('darkness' in target.Attributes):
multiplier = choice([1.8, 1.9, 2.0])
elif ('light' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
multiplier = choice([0.6, 0.7, 0.8])
else:
multiplier = choice([1.2, 1.3, 1.4])
if "light" in attacker.Attributes:
multiplier += 0.5
elif "darkness" in attacker.Attributes:
multiplier -= 0.5
if ('darkness' in attributes):
if ('light' in target.Attributes):
multiplier = choice([1.8, 1.9, 2.0])
elif ('darkness' in target.Attributes):
multiplier = 0
elif "neutral" in target.Attributes:
multiplier = choice([0.6, 0.7, 0.8])
else:
multiplier = choice([1.2, 1.3, 1.4])
if "darkness" in attacker.Attributes:
multiplier += 0.5
elif "light" in attacker.Attributes:
multiplier -= 0.5
* And note that descriptions should be short! We will prolly have NPCs or special help screens explaining stuff in great detail at some point, however descriptions themselves should fit in small tooltip areas.Sir, yes sir!
@Cherry, do you have any progress with girlsmeets?No, I have like 100 or more additional text responses, but this is probably not what you are asking for.
I know that I said that I want to do some changes, but even if I feel that something about current girlmeets is not quite right, I was not able to transform my random thoughts into something worthwhile.
I'll try to form my own concept of girlsmeets after finishing items. So far I'm positive that recruiting and dating should be separated, and enemy/friend/lover statuses should be used.That would be great - I tried for something like that, but I had problems figuring out especially the recruiting part. For dating it's easier, we have a great base in current girlmeets + there are many ways to expand like going to locations and do stuff there, girls being proactive and suggest things, moods, events, etc. But how to hire free girls in some convenient way...
But how to hire free girls in some convenient way...
hiring
It just hit me. Do we have a destined graphic visualization of the NPC that will talk about the alignments? Depending of it gender and looks I will make the dialog more fitting to the NPC characteristics.
I'd prefer a system where it depends on their current occupation, if they already have a job and you don't want to bother with disposition, they have no motive to join you.You misunderstood. If a character is a prostiture class (and all jobs for them are sex-related anyway), then MC can hire her for sexual service as well. Not for brothel, but for himself, for one hour/night/whatever. Pay her good money for it, reduce his libido and possibly increase disposition if he was good enough.
Since they are prostitures, MC can use their services as well, just like other customers. It doen't have anything to do with joining.
Ah, ok, we can do that. There is something like that in the texts already, girl that is a prostitute will reply by "no freebees" or something like that.Yup, that reply is in interaction for a while, but it is based on disposition only (you are only asking her to do it for free). It was called for by people in alpha that prostitutes should not plainly refuse you if they are ok with customers, but I didn't know how much they should ask for, and there is also that training factor in play if MC is skilled enough.
btw, right now, when you do a sexual interaction, girl's and MC's skill increases at a plain percent chance. Maybe we could add a comparison of both actors skills into it? (choosing a partner girl for les action would also gain more meaning in that case)
Guys, is anyone else getting this crap every now and again when launching the game???Yes, it started happening to me after the previous Renpy update (my update, dunno it that was two version before or more by number). But when I start the game for second time, it usually work, so I didn't really cared.
Yes, it started happening to me after the previous Renpy update (my update, dunno it that was two version before or more by number). But when I start the game for second time, it usually work, so I didn't really cared.
It's there on both my pc and laptop. But because I was out a lot and updated stuff in a bunch that time, I have no idea what could have caused it.
I though it's only on my side, like the error I posted earlier that was the case (old girlfiles and such). And It didn't happen to me lately (it's strangely random) so I forget about it until your post, after I started the game several times to confirm it's still there.
Xela, I think you broke something. The game does not have items, at all. I can't even test my jsons.
Edit: my bad, we still have gifts :D
Yup, that's what I mean. Shops are empty, MC's inventory is empty. Bad for testing, really.
There are some strange issues with right mouse button. Looks like the game tries to close main menu and return to the previous screen at the same time, and sometimes fails in both or either one.
Bad for testing
I'm not sure though how to deal with basis potions, like healing and mana. Should they be cheap or expensive, common or rare?Cherry, Klaus, anyone else, any thoughts? :)
Because if they mostly will be used during explorations and battles as a last resort, they might as well be expensive and powerful. While in everyday life there are other ways to restore hp/mp, like misc items, food and rest.
On the other hand, in many games basic potions are cheap, common, mostly not too strong and often used during gameplay.
Correct me if I’m being wrong. Basically potions in the end will be the life savers in the wild (while exploring) and food will be use inside walls of PyTFall to restore health. Or the potions also could be used in the arena between fights?
Another though. For potions abusers, make the potions intoxicate or addict the MC.
For the intoxication: More he drinks = lesser effect, would were off after 5-6 days without drinking.
For addiction: no potion in the morning (new day) 1-2AP less; cure: with some more expensive potion or a treatment from a healer/druid/shaman/doctor/moms chicken stew.
The issue is do You guys want to make this game an RPG with elements of owning the brothel (something like the sim brothel revival project is doing with theirs RPG Maker) or a simulator focusing more on owning, running a brothel and acquiring girls with some RPG elements. Basically it all comes to the main source of income for the MC.
When going with the RPG approach for most players it will end in daily grinding the arena, exploring the wild land to get some serious cash (grind + heal). Go with a lot of moderated price potions that restore 10-25% of the MC HP would balance the potential income.
With the simulation approach, when exploring won’t be a daily thing (but used for acquiring new girls, being sent on a quest, looking for new gear or just exploring for fun/lvling up/treasure hunt) and brothel will be the main source of money; I would go with more pricy potions that restore around 25-50% of health but aren’t too common to get.
Btw. I went with the annoying brat for the elements explanation.
Also:
Would it be possible to use this interface and reserving girls for another events too? Like sending girls to a dance competition, escort mission, custom scripted events etc.? That was actually one of the things I was missing a lot when thinking about making a character story - making a girl unavailable for a while or selecting a girls to accompany you somewhere. (but not like I plan to make one now)
Another though. For potions abusers, make the potions intoxicate or addict the MC.Btw, food already has a similar effect, food poisoning, if you'll try to eat too much.
For the intoxication: More he drinks = lesser effect, would were off after 5-6 days without drinking.
I recall that there was too much micromanagement involved while using consumables like makeups to my liking - they did too little for too short time. Some misc items, like cat, costs you gold when you keep using them - wouldn't it be better to use the makeups in the same way without the need to reapply them on each girl every few days?Such consumables were created with an eye on autobuying system that we don't have yet. You don't have to force girls to buy and use makeup irl, they do it automatically if they have enough money, so in the game they should do it too :D
I think that the items rewards should be much less common.I agree. Moreover, maybe some nonlinear events, like those simple text quest dungeons in SM3.
But aside from adding more favored texts and events, I don't think it's missing much at this point. I played a few games that have reports like this as a main gameplay and there were ok.
Special skills is an interesting suggestion but a bit too vague...In the absence of skill tree we only have traits and base races. Races and traits checks, I guess?
@Xela
I think that the items rewards should be much less common.
@DarkTl
Dunno about potions... but I generally favor items to be rarer.
In the absence of skill tree we only have traits and base races. Races and traits checks, I guess?
Also, we might need quest items category for things like keys from dungeons for example.
Misc items are able to change stats every N turns, they cannot just modify them once. And we already spent a lot of time on items, it's time to work with tags and girlsmeets.
@Xela about restoring HP on exploration.
Maybe lets drop the potions usage for exploration and implement something like a Combat Medic Kit. It would restore a certain amount of HP after every fight. I'm thinking it would be a onetime purchase for every team (u give every team a medic kit). Also could be different sizes. Small could restore around 20-30%, when large around 80-100%.
While running game code:
File "game/library/screens/pyt - screens - nextday.rpy", line 134, in script
python:
File "game/library/screens/pyt - screens - nextday.rpy", line 136, in <module>
result = ui.interact()
File "game/library/screens/pyt - screens - nextday.rpy", line 1188, in <module>
text (u"{size=-5}%s" % event.txt) color black
KeyError: u'red}%s has died during this skirmish'
Edit: Structures can be created in JSONs, I am not sure about how to make a representation of them yet or if one is even needed. Special skills is an interesting suggestion but a bit too vague...depends on how enemies and rewards are handled now, I didn't looked at that yet :)
I am thinking that we should also specialize some items locations to be specific to regions, same with girls.We could also add some cheap gameplay-prolonging tricks like gathering throphies/materials instead of complete items and then exchange them with some npc for real stuff.
Got this:Code: [Select]While running game code:
File "game/library/screens/pyt - screens - nextday.rpy", line 134, in script
python:
File "game/library/screens/pyt - screens - nextday.rpy", line 136, in <module>
result = ui.interact()
File "game/library/screens/pyt - screens - nextday.rpy", line 1188, in <module>
text (u"{size=-5}%s" % event.txt) color black
KeyError: u'red}%s has died during this skirmish'
For exploration screen:
- team leader is not easily changeable like the other members
- would be good to have HP bars there, or something like that
- also maybe some indication that a girl is part of MC party
I need more opinions on this one... not going to code either approach until we've decided.
It would be harder to explain (I guess something along the lines of areas being too unstable to use potions safely so medkits are required). I see no reason why amount of medkits should be limited while space to carry other items is not. Medkits thing would be a bit of a stretch but definitely simpler to code, would also be an excuse to add that quest items category Dark mentioned.
I need more opinions on this one... not going to code either approach until we've decided.
Or a different approach for healing an exploration team. Make the party 4 people. The 3 of them would do what they currently do, stuff like combat, exploring, bringing goods to the camp.Good idea.
The 4th would be a non combat, support role that maintain the camp, prepare food and drag away heavy wounded team members (making them survive a wipe) and provides healing after a battle.
Explanation: Potions are a liquid stored inside vials, bottles = it's a pain in the ass to transport something like that in the field, not speaking about using something like that in battle or ensuring its safety. There is a possibility that after a battle, a girl would be “last man standing” and heavy bleeding not able to be saved, because a potion vial broke during a fight.Eventually we want an offshoot for ES where MC personally explores some (important enough) dungeons with a small team. With this exploration we will never be able to use potions during explorations, even inside BE.
When team explore and gets in a fight does they heal between the attacks or is it a last man standing brawl and the team heals after the fight?
Guys, I really don't want to decide this thing myself, both options (normal potions and medkits) are really good. Just comment your thought on this thing, I wanna code this in tonight.If you really want everyone option, then I will be bit of a rebel there with mine, cause I would prefer to have no instant healing in the whole game at all :D
If you really want everyone option, then I will be bit of a rebel there with mine, cause I would prefer to have no instant healing in the whole game at all :D
Ghm.. that would be an interesting concept but a bit unusual...For classic RPG, where critically injured character pretty much means that you can't play anymore, yes.
Dark mentioned that the party could have a maximum load.Don't worry, I will convince him to limit exploration party inventory eventually when we will expand ES more in the future :)
BUT if usage of healing potions is limited, like that you can only drink one in a few days, then it would be perfectly fine and reasonable to use both.Could be easily implemented and would be a good explanation too.
But those icons are cool and pretty :)Dark, try something like this:
Maybe we at least could just use them in exploration gui somewhere.
But those icons are cool and pretty :)
Maybe we at least could just use them in exploration gui somewhere.
Well then, let's discuss a new meeting system concept little by little.
1) Since we divide dating and meeting, MC's goal during meetings is to either hire a girl or become her friend and then proceed to hiring or dating.
Initially you could hire only low lvl, poor characters that don't have a job. Maybe you also need at least 50-100 disposition before they agree. In order to hire high lvl ones you need to achieve friend status (let's say, 500 disposition) and then ask them to join you.
So we need levels, and not only random ones for rgirls. We need them in girls data files too.
2) After achieving friend status you should know where a girl lives (I have some backgrounds for girls rooms in my db), so you can find her anytime without having to rely on chance. I guess it should look like a list of girls called notebook or something.
In the future friend status should mean that you have some limited access to girl's inventory as well.
2) Initial impression. Depending on MC's stats, initial disposition could be higher than 0. For example, id= (charisma+refinement)/4 or something like that.
Moreover, various girls traits may lower id. For example, shy/dandere could have lower id not because they dislike MC, but because it's harder to gain their trust in general. I believe it could be easily achieved by adding mod disposition in traits files.
Any thoughts so far?
About other more creative suggestions.
Maybe also add something like a stat window in a classic date-sim game. Where the player could check the affection towards the MC by the girls that the MC already met? Also a “go visit” button could be in there, allowing visiting the girls home.
And question:
Are you guys thinking of forcing a free, met girl to do what you want? I’m asking about raping and kidnapping her into slavery (something like: “The punch to the stomach cut her lights out. You dragged her to your place”).
And question:
Are you guys thinking of forcing a free, met girl to do what you want? I’m asking about raping and kidnapping her into slavery (something like: “The punch to the stomach cut her lights out. You dragged her to your place”).
Window should be doable without too much fuss, I am just not sure about how much info we should put there.
So If we really want to split the hiring/seducing part, then I think we need to add some new system for hiring (based on something else, like different stat or so), otherwise it's just removing some of the options from it, and that would be kinda meaningless.
For the new system. Maybe it could be a three-part system.This is actually almost exactly what I meaned by "persuasion" in that concept I posted a few pages ago :) So I thought that this could be a good way to do it, but I was not able to come with a set of meaningful stats that could work with it. I suppose things like MC's reputation, wealth, business fame, relationship with organisations/important npc and such would be great for this, but they simply doesn't exist in the game atm (only arena rep for warriors). Same goes for negotiation on work conditions, nothing like that is even planned I believe. And, like I wrote in the post above your, just adding "persuade to work" AP to points button without anything else taken into account feels too bland.
I'm not sure I see a difference between a hate/love continuum and the extremes of a disposition continuum. If disposition goes from -100 to +100, then -90 or less could be hate and 90+ could be love.If basically just a flag, but it should be more stable then just using disposition stat number. For example if one day girl disposition is 91, the second 89, then 91 again and so on, using just 90+ to determine lover will cause that the girl will not have a relationship with you every other day. We want it to be more stable - "joy" in game already works like that when determining when the free girl will leave your service - not just by being distressed for an instant (joy suddenly dropped) but when she is unhappy for a number of days in a row (so you have a chance for a while to raise her joy to prevent it)
========
Ok, I started downloading AA2, will take a while. But I looked at the translation files in meantime and they're easy to copypaste like in AA1, so we can shamelessly steal some again if needed 8) (I taken some lines from Kancolle, Love Live! and IM@S games lately, unless a writer join, copying it's the best I can do, as my own writing is terribad)
And if I'm correct, wage is calculated every single day from girl stats now, so we can't use absolute numbers there, but maybe the girl may ask for a higher percentage of it? There was a slider for that...
@Xela? May I ask you about it? What our options with wages are, I never worked with that part of code...
Are you guys thinking of forcing a free, met girl to do what you want? I’m asking about raping and kidnapping her into slavery (something like: “The punch to the stomach cut her lights out. You dragged her to your place”).The problem here is what's coming next, after you kidnapped and raped her. You can't just let her go. We need a decent, interesting yet not too complicated dungeon/slavetraining system here. And unfortunately none of us was able to come up even with vague concept. If you can, be my guest.
Dates should really be similar to AA2 as well I think, a nice screen transition (maybe some background) and a result reported in short text. Our dating mech is far more advanced but still feels inferior to that for some reason (at least to me). We can have more structured dates as unique events in the future.Well, in wm dates don't even have a black screen, just some text and very simple scripts.
I'm sorry, that this is too vague concept for me to comment on.That's why I said little by little :)
For the new system. Maybe it could be a three-part system. In general there would be three status bars for the girl. First, the love bar displaying how much she is in love with the MC. Second, disposition, displaying what she thinks about him in general (good impression of him or if he is a total douche bag). The third would be a job bar, displaying how much she is interesting in working for the MC.Sound interesting. We could do it if Xela will agree to add more values, he tends to avoid new stats lately.
And if I'm correct, wage is calculated every single day from girl stats now, so we can't use absolute numbers there, but maybe the girl may ask for a higher percentage of it? There was a slider for that...If we'll have the job bar, you could adjust the slider by yourself to make sure girls won't quit. We could throw a warning when the bar becomes too small, for example the girl comes to you and complains about conditions of work, or your assistant tells you that she looks for a new job.
Sound interesting. We could do it if Xela will agree to add more values, he tends to avoid new stats lately.
Did you see the new mock up of the OldHuntsman game in Ren'Py? I've implemented a similar map system, takes a bit of getting used to but it's better than what we had. That game may turn out really, really well, if they don't go ballistic on gore sh!t again, seems like they have a perfect combination of excellent coders, writers and graphic designers on their team.And you have us :P
The job thing can be a derivative that is calculated on the spot though.But still we probably should use disposition and love. AG and AA games showed us the efficiency of such a system.
seems like they have a perfect combination of excellent coders, writers and graphic designers on their team.They had 7 coders that coded it together and then 6 of them dissappered (sounds like a fantasy story :D ).
They had 7 coders that coded it together and then 6 of them dissappered (sounds like a fantasy story :D ).
And you have us :P
Really? I could have coded that in under 4 hours if someone provided graphics/texts and concept + my version would have been easier to expandSounded like a pro. 8)
What is a "snowball hit effect"?
Long story short. MC enter the are and gets hit with a snowball in the face. I want that to be visualized by a splash/hit effect on the screen. Something like a snowball hitting a window or a camera.
I am having a bit of a trouble following the design, for example items like health potions seem to have 50 equipment chance and badness of 70 - 90 while they have absolutely no sideeffects?Under normal circumstances badness 90 shows that they could buy it just in case. Because under normal circumstances you don't really need to buy or use healing potions. Moreover, you cannot express the need for them via badness and eqchance only.
That's it. I can't really code this instead of you, so choose what you like. In my opinion, this is the best compromise between 100% random like in wm and advanced AI[/color] algorithms.
For non restore ones
1) choose random slot
2) check for gold, exclude too expensive items
3) goodtrait = 100% chance, badtrait = 0%, otherwise buychance=100-badness. if item already exists in the inventory then buychance = buychance/4. Maybe good occupation +50%, badoccupation -50%.
4) prepare list of items like dress1:chance1, dress2:chance2, for rng.
5) rng. maybe there could be 40% chance to buy 2 different items.
6) AE system decides what to do next
...
Besides errors I posted in the errors thread, there are unnecessary menus when you press on cursed forest or forest entrance panels.
If someone wants to add some more locations to json, feel free to do so, might be good for testing.I wonder how. It seems that EE isdivided into several files. I found Forest Entrance and Cursed Forest in the classes-locations, but since there is no link to the forest picture, I guess it should be somewhere else.
I wonder how. It seems that EE isdivided into several files. I found Forest Entrance and Cursed Forest in the classes-locations, but since there is no link to the forest picture, I guess it should be somewhere else.
Also, explain the difference between focus_area and focus_gen_area.
Hey everyone!
So... this project has been around for a while and since I had a lot of free time in the past month I guess it's time to give some feedback. I'll put it in one post although I am aware that some of the topics have own threads. If you don't like that, feel free to tell me.
Disclaimer
Many people don't like criticism (especially programmers) - therefore I'd like to mention that everything written here is meant in a productive, non offensive way and is just my personal opinion.
Traits
Problem
Currently, most traits are just attribute modifications that don't have a meaning at all, especially since there are three other ways of gaining attribute points (experience, training and equipment).
Problem
Slaves have very few things that distinguish them from normal employees. APs are replaced by money to hire them, wages are replaced by the slave tax to pay them - in both cases it is essentially the same outcome for the player.
Problem
Redundancy, duplication and the same thing multiple times. Seriously, I don't mean to be offensive, but the current tagging system is horrible. You essentially store the exact same data three times - in the name (currently not used as information source for whatever reason), the XMP metadata (a really bad way to obfuscate information) and the json files (that aren't even sorted for fast access).
Problem
Not only does the game allow it, I'd say it encourages it, especially in the arena. There are so many random things (rewards, enemy selection, critical hits) that it can get incredibly frustrating.
Arena
Problem
I know this is kind of a work in progress, but currently it bugs me very much that fighting in the arena is so much more efficient than anything else in the game. I consider it a good thing to make the game more than just a brothel sim, but in the end all activities should be equally rewarding.
Problem
I've checked out the thread where somebody is asking for advice on what each attribute does and someone answered that the stats should be self explanatory. Well, they're not, at least not all of them. This might be a problem of missing implementations (work in progress stuff), but what are "character" and "libido" supposed to do? Isn't "character" just inverted obedience? If so, why is there one black sheep among the flock (one negative among positive attributes)? I have a stripper in one of my savegames that has 0 character and 100 libido and still refuses to work as a prostitute (which is kind of ridiculous).
Solution
I know the game is an alpha version, but some basic documentation wouldn't hurt. This includes things that are supposed to work and things that will be added in the future.
Conversion vs compatibility
Compatibility with old WM packs is nice, but a tool for converting them would be better. It bugs me that the missing elements are random generated for every new game.
Savegames
Modifications to characters that aren't in the saved game yet (yes, I did check the whole city) do not apply for some reason. The same goes for database changes (e.g. adding a new item). Is that a bug or do you actually save the whole database in a save game?
Error handling
The note that some file wasn't found is really not helpful. What would be helpful is a tool to verify characters or an error message that actually tells me what file the game was looking for. Also, crashing the whole game because a single image couldn't be loaded seems unnecessary.
Interface
Resolution
The maximum internal resolution is 1280x800 - 720p isn't too bad, but on a 1080p screen it still looks... questionable. Is there a way to increase the render resolution?
New day
Problem
The new day screen doesn't have the focus that I'd like it to have. To put it in simple terms: What I want to see in the first place is the image. Afterwards, a short text and a summary of stat changes would be nice. So that's the priority. Why does the image only get 1/3 of 3/4 of the screen? Why do the few numbers that show attribute changes get just as much? Why does the tooltip box (in which I've never seen more than one line) get five? Why does every building have a (relatively) huge thumbnail instead of a simple "Next -"/"Previous brothel" button?
Problem
Currently, all attributes are expressed with two numbers - current and maximum. While that is technically acceptable, managing equipment for characters would be a lot easier if it would be visible how many points are the character's base and what comes from equipment (and, currently, traits).
Other problems
That's not true, there are literally thousands lines of code, behavior, events and texts governed by traits. It is just not being relayed player in text form but attempts to create an appropriate environment and behavior of the characters. Also traits now have different mechanics as well and those "unique" properties you've suggested has been added as Effects (I do not remember if that is the case in an Alpha).Alright. Well, I haven't noticed any trait based mechanic other than for the "Virgin" trait in the alpha release. Maybe I just haven't been paying enough attention to it...
Most of the solutions proposed are already a part of the game (even the alpha release I believe).
We've tried storing complex data in filenames, looks ridiculous and bit of a pain for work with (tagger would also be required I think). I'd love to see a user changing a file name called jfmsiofh09whfw0efbn04w8hr0wrhbw0gfbw08trhj03hbrfw0irfjwe0-rehj0kfn0rde9hbn9wefubfsb.png without any additional tool :D It's an option, just don't know if it's faster/more reasonable than json.Aha. So they are ordered by tag internally but json doesn't allow it. Interesting, didn't know that. Generally, I think adjusting the tagging software at this stage of development shouldn't be a reason not to make changes. I'm not sure how fast the conversion is (from the json format to the internal format), I guess it's not a big deal, but speeding things up wouldn't be bad either.
tag: set(images)
is how it's is stored in the game, json is required to be sorted in a different manner for reasons I don't want to go in right now. It can be circumvented, but I doubt it will significantly improve performance and all tagging software would have to be adjusted.
Falling back (hierarchical order) can be handled with code, if it can be done with tagging concept, fine but it is not going to be easy.Actually, a combination of both would be the easiest approach.
The lesbian thing was inherited from WM, we've taken a bunch of concepts we prolly shouldn't have. But the current system is working, there is no denying that.Yes, it's definitely working - but that's not a good reason to make the same mistakes again. The more you are afraid of making far reaching changes now (which I can totally understand by the way), the more you will get into trouble later on.
This was reported several times, I still don't understand why. If people want to do it, why not let them?As I mentioned in my previous post, there is too much frustrating RNG at the moment. Most users reporting it are people that don't like save scumming but still do it sometimes because of that (side note: I'm claiming that not because I am one of them but because I have some experience in game design).
It might hurt me :DThanks for keeping it in mind ;) .
We've made mechanics too complex for a 2 + 2 = 4 explanations and they may change in the future, we may cook something up for the next release.
The randomly generated elements are better now but you can just edit the files + throw in battle, beach and portrait pictures and you'll have a half-baked "native" character.Nope. That is exactely the problem: Simply editing the .girlsx files is not an option because they are missing information like occupation and location (among others). That's why a tool for converting them into your xml format would be nice.
Whole database is saved, yes.But... whyyyyyyy? I mean... I guess you have your reasons, but is that really necessary?
There is very little to be done about the resolution without an obscene amount of effort, but it might get better after we redesign the screens.Oh. Well, can't do much about it if the framework doesn't allow it. And changing the framework at this point of development isn't a viable option I guess.
We went with a summary screen approach, these are from a more recent version (actual game, not mock-ups):It's an improvement. Still not ideal in my opinion, but definitely better.
And people on the other side of this argument are asking to obfuscate stats all together. It can be done without too much fuss I think but is bound to piss some people off.Ok, I give you that one. I guess it's just personal preference how much information you want to see.
Hey there!Alright. Well, I haven't noticed any trait based mechanic other than for the "Virgin" trait in the alpha release. Maybe I just haven't been paying enough attention to it...
Aha. So they are ordered by tag internally but json doesn't allow it. Interesting, didn't know that. Generally, I think adjusting the tagging software at this stage of development shouldn't be a reason not to make changes. I'm not sure how fast the conversion is (from the json format to the internal format), I guess it's not a big deal, but speeding things up wouldn't be bad either.
I agree that storing data in filenames looks somewhat ridiculous, but I definitely think that it is both faster and more reasonable.
- Second, it would avoid storage redundancy. The name of a file is always read by the OS, so it doesn't matter if there is information in it or not - it will always be accessed for every file.
Tagging:Parsing:
- User adds tag
- Add all parent tags (recursive)
Not so complex, is it? Sure, you could also use a code-only solution with double-linking (parent -> children and child -> parent):
- Check for an image with the tag
- If none exists, check for next parent tag (recursive)
- Check for an image with the tag
- Find all other child tags of current parent (recursive to include their children as well) *
- Check for all found tags in random order (*recursive)
As I mentioned in my previous post, there is too much frustrating RNG at the moment. Most users reporting it are people that don't like save scumming but still do it sometimes because of that (side note: I'm claiming that not because I am one of them but because I have some experience in game design).
Nope. That is exactely the problem: Simply editing the .girlsx files is not an option because they are missing information like occupation and location (among others).
I wrote such a tool for .rgirlsx files by the way (it reads the files from the current folder and converts them to the json format, missing information is prompted via GUI), but I was incredibly lazy (really damn lazy) so the output files are written line by line instead of by a json writer. I'd better not show the code to anyone :-X .
Seriously though, I could write a similar tool for girlsx to xml conversion (hey, maybe I'll even use a real XML parser) and upload them.
Actually, screw it, it's not like I have anything to do in the next month. Let's see if I get bored enough to write a character creation tool that can export chars and rchars, import girlsx and rgirlsx and modify tags (in the way that I suggested so you can't use the "missing editor" excuse)!
But... whyyyyyyy? I mean... I guess you have your reasons, but is that really necessary?
Oh. Well, can't do much about it if the framework doesn't allow it. And changing the framework at this point of development isn't a viable option I guess.
ProblemAside from attribute modifications, every trait has (and will have) checks in the code where it makes sense. Moreover, for many traits attribute modification is the only way to show somehow that they are working, because some systems are not ready, so it's like a placeholder.
Currently, most traits are just attribute modifications that don't have a meaning at all, especially since there are three other ways of gaining attribute points (experience, training and equipment).
For those who don't know, save scumming means to create a save point before every important event (e.g. a fight in the arena or a new day) and reload if something bad happens.I believe scumming protection should be an optional part. Maybe even a part of higher difficulties only.
The maximum internal resolution is 1280x800 - 720p isn't too bad, but on a 1080p screen it still looks... questionable. Is there a way to increase the render resolution?Keep in mind that the most important our resource - girls pictures - cannot be redrawn to higher resolutions anyway.
Overly complex or punishing mechanics (e.g. assassins and bodyguards) - while I think that it sounds very interesting, I also think that it's a little too complex (especially because killing the player in a game like this sounds like a really bad idea).Um, these jobs are decoration for non employed by player girls ::)
Correct from the viewpoint of logic, but counterintuitive. No one says "lesbian hot blowjob", they say "lesbian hot licking" :D
- An own tag for lesbian activities? That's a sexual orientation, not a sex type. Licking a woman as a woman can be considered a blowjob, fingering equals handjob and so on.
Great FigureAnother legacy trait btw. I'll think about it.
Another legacy trait btw. I'll think about it.I know it doesn't really show in drawing styles of manga or anime, but some characters are stated to be more beautiful then others in the series.
It may be faster, hard to tell without timing. You'd have to analyze every single file name sting, from jsons, you just open/read the file and load data.I disagree. Sure, the json approach requires less code because all the logic is hidden behind an API, but think about it:
This process is a lot more complicated that it seems. You often require a combinations of many tags, at times some are more important than others, sometimes they all have the same weight and so on. Tagging system is far more complex and better tuned that one can imagine just by looking at tags and there are still improvements to be made. We don't utilize it enough yet either. It's a work in progress, but the way you look at it is oversimplification.I don't see why multiple tags and weights should be difficult to implement:
The reason I do not worry about it too much atm is that we can add an option to lock random seed as an option in the future or enable saving only once every 10 days for example. Personally, I do not see a problem here and simple ways to improve the situation for the more coherent release.
I believe scumming protection should be an optional part. Maybe even a part of higher difficulties only.Let me try to clarify this: I don't expect you to completely prevent save scumming with the slot solution if you don't want to. But I still want to see the proposed changes to random elements implemented to reduce RNG frustration.
? What exactly is stopping you from adding that information?Yeah... I never even tried that. Silly me.
Random girls from WM are not fun in PyTFall without converting (properly) image packs as well, and anyone who is willing to do that will write their own json files. (takes 5 mins, converting packs takes hour(s))Indeed. Funny thing is that I stumpled upon the issue that there are way too many tags while doing that. Writing a tool for converting the data files still saved some time though.
If you actually get around to writing one, see if you can add renaming images to tags in filename structure as well. I'd need a JSON with a simple dict of:Uhm... the dictionary should only take me a minute to create, but what is the index for?
{"bj": [index, "blowjob"]} to convert the info in the game, we can see what's actually faster more convenient then.
Writing code to add an option to reload databases when loading savefiles is easy and I've already done it, but because we change stuff so often, it proved to be annoying so we decided to leave it until there is a coherent game version.Makes sense.
Framework doesn't give a sh!t, you can set up any reasonable resolution. It also does excellent job "stretching" the screen but in order to actually support different resolution, I'd have to calculate size of every graphic element based of screen width + height setting. It's a bit too much, especially since the game window can adjust really well. Also, using better/more coherent graphical resources may improve the matter.That confuses me. Aren't you using a layout manager to scale the interface based on weights and alignments?
Keep in mind that the most important our resource - girls pictures - cannot be redrawn to higher resolutions anyway.Confusing as well. There are very good scaling algorithms and libraries (that produce good results even when upscaling by factor two).
Correct from the viewpoint of logic, but counterintuitive. No one says "lesbian hot blowjob", they say "lesbian hot licking" :DI see your point. However, I think that less tagging effort is worth a lot more than slightly more intuitive tags.
Well, unless we talking about sucking a strapon or something. Thus, even more counterintuitive.
I disagree. Sure, the json approach requires less code because all the logic is hidden behind an API, but think about it:
OS file listing lists all filenames within a folder - the JSON file is a list of files with name and path.
Yes, you'd have to call String.contains to check for tags - but with JSON you also need to compare the tags (which is most likely a full string comparison). Additionally, you need to open and parse the file first.
Just because the library takes care of it doesn't mean it's gone performance wise.
I don't see why multiple tags and weights should be difficult to implement:I should propably mention that I don't like the idea of looking for multiple tags or weighting them in general. The simple reason (based on my opinion): If you are looking for multiple tags then the image doesn't have a clear focus or there are too many unnecessary tags. If the image doesn't have a clear focus then it shouldn't be in the pack. If there are too many tags... read my first post.
- Check for an image with a list of weighted tags *
- Mark all found tags from the list
- If none exists, replace all tags that aren't marked with their parent tags
- Shift the weight of the replaced tags to their parent tags (*recursive)
I'm pretty sure that there are exceptions, but you get the general idea.
Let me try to clarify this: I don't expect you to completely prevent save scumming with the slot solution if you don't want to. But I still want to see the proposed changes to random elements implemented to reduce RNG frustration.
Second, the random elements - let's start with the arena.
- The rewards should be further split up into tiers based on the item value (e.g. stimulant in tier 0, big mana potion in tier 1 and ultimate health potion in tier 2). The rewards could then be readjusted to reward one random item from each tier.
- Something similar should be done for the enemies. I don't want to get into details here because the chainfights don't seem to be very polished so I assume it's still a work in progress.
- Critical hits are a problem because most games that use critical hits have a high amount of hits per fight, reducing the randomness by applying the law of big numbers. In PyTFall, some fights are over after a single hit - that's not a good environment for random critical hits. If you want to keep the mechanic you should introduce items that balance it, e.g. a full body suit that prevents critical hits on the player.
- The training also is quite random. The amount of stat points that a character gets should be more consistent.
- Events like the prostitute violence or the above proposed slave raid are somewhat difficult to adjust. I think a pseudo random system would be the best approach here - which basically means that the chance for an event to happen increases until it happens and then gets reset.
- Finally, the shops could get a button that refreshes the inventory for a small fee.
Uhm... the dictionary should only take me a minute to create, but what is the index for?
And by "filename structure" I assume you mean the tags.json files?
That confuses me. Aren't you using a layout manager to scale the interface based on weights and alignments?
"The maximum internal resolution is 1280x800 - 720p isn't too bad, but on a 1080p screen it still looks... questionable. Is there a way to increase the render resolution?"
frame:
background Frame("content/gfx/frame/desk_1.png", 15, 15)
xysize (600, 710)
pos(20, 60)
Sorry but I don't understand what's wrong with tags at all. I mean, what you are talking about. Was this supposed to be about tagger, tags or tags calling in code? Something not working? (I'm using Rudi's tagger and I didn't have a problem yet) And WTF is "parent" tag? (tag is either there or not, what else?)
I personally would want to maybe change actual tags a bit (but only change to blowjob is truly required atm) and always welcome improvements to tags call methods, but I don't see any problem with the tagger. (but I didn't try the second one)
Isn't "character" just inverted obedience? If so, why is there one black sheep among the flock (one negative among positive attributes)? I have a stripper in one of my savegames that has 0 character and 100 libido and still refuses to work as a prostitute (which is kind of ridiculous).
Heh. thanks for explation of what's going on :)
Ok, so my option is:
- I think that current tagger-json system is working fine for our purposes. Its likely not perfect but that could be said about just anything in game - and I just don't feel that the improvements there would be wort the time that could be spent elsewhere.
But maybe I just didn't understand the suggestion well enough.
- there is an overwhelming number of tags, but majority of them are secondary tags which are just optional to use - pack creators can just tag everything with only major tags like "profile" or "sex" and girls will work with generic texts with almost no effort (like girls imported from wm). That's why we didn't hold back there, it's just for the perfectionist freaks who care about it :) But some tag revision is planned.
def auto_equip(self, target_stats, exclude_on_stats=None, slot="consumable", source=None):
"""
targetstats: expects a list of stats to pick the item
exclude_on_stats: items will not be used if stats in this list are being deminished by use of the item
*default: All Stats - targetstats
slot: slot
source: list of inventories to draw from
"""
if not source:
source = [self.inventory]
if not exclude_on_stats:
exclude_on_stats = list()
items = store.items
returns = list() # We return this list with all items used during the method.
if slot == "consumable":
# The idea is to increase any particular stat to it's maximum
# Maximum raising should be coded in at some point as well
# Here we need the best item to increase the stat:
# ------------->
# Get all items availible for the task:
for inv in source:
d = dict()
content = inv.content
# Try to get a dict of all useful items:
for item in content:
item = items[item]
if item.slot != slot:
continue
if set(self.traits) & set(item.badtraits):
continue
if any([item.ceffect, item.type == "permanent", item.sex not in (self.chr_sex, "unisex"),
item.id in self.consblock, item.id in self.constemp,
item.type == "food" and self.effects['Food Poisoning']['activation_count'] >= 9]):
continue
# We finally check if there is at least one matching stat and if so, add the item at 0 priority
for stat in item.mod:
if stat in target_stats and item.mod[stat] > 0:
d[item.id] = 0
break
# Wasteful items, we reduce the desirability by 100:
bonus = 0 # Actual bonus
possible_bonus = 0 # Total possible bonus
penalty = 0 # Total penalty
# Normal stats:
for stat in item.mod:
if stat in self.stats: # Not usefull?
if item.mod[stat] > 0:
possible_bonus += item.mod[stat]
if stat in target_stats:
# This is not perfect, but it shouldn't matter (max at the game start issue)
if self.stats[stat] + item.mod[stat] > self.get_max(stat) + 5:
bonus += max(0, self.get_max(stat) - self.stats[stat])
else:
bonus += max(0, item.mod[stat])
# Since (almost)) nothing is wasted, we'll just multiply bonus by 100!
bonus = bonus + item.mod[stat] * 100
else:
if stat in exclude_on_stats:
penalty += item.mod[stat]
# We do the same thing for max stats:
for stat in item.max:
if stat in self.stats: # Not usefull?
if item.max[stat] > 0:
possible_bonus += item.max[stat]
if stat in target_stats:
# This is not perfect, but it shouldn't matter (max at the game start issue)
if self.stats.max[stat] + item.max[stat] < self.stats.lvl_max[stat]:
bonus += max(0, item.max[stat])
else:
bonus += max(0, self.stats.max[stat] - self.stats.lvl_max[stat])
else:
if stat in exclude_on_stats:
penalty += item.max[stat]
# Last, we multiply bonus by two if item in in good traits:
if set(self.traits) & set(item.goodtraits):
bonus = bonus * 2
# Normalize the three:
# bonus = 0 # No need for normalization
possible_bonus = min(100, possible_bonus)
penalty = min(150, penalty*-1)
# and finally set the priority getting this right is possibly the most important thing in this method:
d[item.id] = bonus * 2 + item.eqchance * 2 + possible_bonus - penalty
# If there are no items, we go on with the next inventory:
if not d:
continue
# Now that we have a dict of item ids vs priorities:
# Sort by highest priority:
l = sorted(d, key=d.get, reverse=True)
l = list(items[i] for i in l) # Get a list of item instances.
first_loop = True
for stat in target_stats:
for item in l:
while self.get_max(stat) - self.stats[stat] > 0:
# apply the actual item effects, do checks and repeat until stat is maxed out.
# Break out immidiatly if item is not capable of increasing this stat:
if stat not in item.mod or item.mod[stat] < 0:
break
if not first_loop:
# If we used this item once already, it is sensible to check if it's wasteful to use it again:
# This will handle all other items as well, if expensive item is wasted (by more than 30%), we will not use it.
# This will not run if any stat is below 40 (In such case we most likely want item to be auto-used anyway)
if self.stats[stat] > 50 and self.stats[stat] + item.mod[stat]*0.7 > self.get_max(stat):
if item.price > 100:
break
first_loop = False
inv.remove(item)
self.apply_item_effects(item)
returns.append(item.id)
# Check is there any new conditions preventing repeating the process:
if any([item.id not in inv.content, item.id in self.consblock, item.id in self.constemp,
item.type == "food" and self.effects['Food Poisoning']['activation_count'] >= 9]):
break
return returns
I'll give you an End User opinion. 8)
Fatigue is currently building to 300/300 correct? Energy would start at 300 and reduce to 300 when tired?
Either method is easy enough to understand and doesn't make a difference to me. I'd say go with what is easier to code.
Well, if you code a tool that can write data to filenames and json, we'll know. Otherwise I am not guessing what's faster.I'll do some tests.
- Rewards work fine, I will not complicate working systems until a final release.Ok. First, I believe you're making a big mistake by moving everything that doesn't seem important to you to a release version. I don't want to sound like my profs (sorry if I do), but planning things through (including details, the only thing that can wait is the balance of numeric values) is very important, it's the first important step for every project. I don't expect you to say/write "Of course, I'll implement it right now!", but something along the lines of "Thanks, I made a note so I won't forget about it later!" would be great.
- Same as above.
- At higher levels fights can take a really long while, one - two hits fights are less common I believe. Also there is no point of doing this before we rework battle engine.
- And I like randomness during training.
- Job attack Events depend on clients that get "Aggressive" trait randomly assigned, they are farther mitigated by security rating. I see no reason to change that.
- I actually hate stuff like this in games, it kinda ruins the mood and disrupts continuity. I expect mods will take care of request like this in the future.
In any case, most of this is fine-tuning, we'll take care of stuff like this when there is a game with more or less solid concepts in place + locking random seed solves most of these issues, if stuff isn't randomized after loading game anymore, save-scumming becomes a lot less attractive.
=====================================How about vigor?
I need confirmation, we NEED to invert the fatigue stat! I want to rename it to energy but I recall that someone had problems with that name! Please comment on this...
Ok. First, I believe you're making a big mistake by moving everything that doesn't seem important to you to a release version. I don't want to sound like my profs (sorry if I do), but planning things through (including details, the only thing that can wait is the balance of numeric values) is very important, it's the first important step for every project. I don't expect you to say/write "Of course, I'll implement it right now!", but something along the lines of "Thanks, I made a note so I won't forget about it later!" would be great.
How about vigor?
I need confirmation, we NEED to invert the fatigue stat! I want to rename it to energy but I recall that someone had problems with that name! Please comment on this...Not me! I'm innocent! I suspect the other guy! :o :)
Hey there!Hi! You're sure welcomed with that. It may be a little hard to convince some of us who already put 100+ hours into tagging images and related stuff about it, but if you really think that something could be done in a better way, it's always worth to try. We want the game to be modder friendly for sure, so more ideas about achieving that, the better.
First things first: Let's stop the tagging discussion here. I got your points, I'll see if I can come up with something that satisfies all of them (including my own) and post it in the "Image tagging concept" thread.
I think viable options are:
Vigor
Energy
Vitality <-- (I kinda like this one, but it kinda presents same issue as Vigor :( )
Determination
Ability
Liveliness
There are very good scaling algorithms and libraries (that produce good results even when upscaling by factor two).Even though we already resized girls pictures a lot to reduce packs size, there are still people complaining about it. Basically, it seems that people would prefer low packs size over high quality and resolution pics. And you cannot scale small, low-q pics with good results.
However, I think that less tagging effort is worth a lot more than slightly more intuitive tags.You should try to tag at least one 1500+ pics pack before saying so ;)
BTW: Is there any feedback on new city map button system? Is it acceptable/better/worse than the old one (switching back is literally just clicking one button in version control software to go back to precious map.xml).It looks very cool and it defenitely better than the old one. The only problem is that locations are invisible until you select them. Thus, you have to remember where to click, and what exists in the game at all.
I've got auto-equipment method to work for consumable itemsAwesome :)
But I've already decided to do that, we had a discussion some time ago and someone really hated "Energy" as a name for a stat (Unless I am mistaken).You see, this forum equipped with powerful search function :D
Maybe add to the list: tiredness or exhaustion (both plain and simple in my opinion).
Maybe it was somewhere else, but definitely not here. I don't care about it, personally.
It looks very cool and it defenitely better than the old one. The only problem is that locations are invisible until you select them. Thus, you have to remember where to click, and what exists in the game at all.
Maybe it should look like in starcraft2 campaign, if you ever played it. Interactive elements there have very thin frame around them all the time.
INFO PyTFall 0.47 Alpha Auto-Shopping + Auto-Equipping for Combat of all chars!
INFO PyTFall 0.47 Alpha It took 2.01399993896 secs to execute!
INFO PyTFall 0.47 Alpha Attempt to auto-buy 100 items for all girls!
INFO PyTFall 0.47 Alpha It took 1.20599985123 secs to execute!
INFO PyTFall 0.47 Alpha Attempt to auto-buy 3 items for all girls!
INFO PyTFall 0.47 Alpha It took 0.159999847412 secs to execute!
Do we still have Sexy Air trait, some items try to apply it?Damn, forgot to add it during the review. Will do it tonight.
Any thoughts so far?Whoa, now it went from too simple to complicated in my option :) Ok, my 2c
- Highlighted idle Arena as possible city map buttons concept, right now idle buttons are simply invisible...I like it. Not sure what else could be done. You mentioned animation, but I wonder how are you going to animate something here.
(Not sure if I prefer it that way, any opinions ??? )
(http://s30.postimg.org/9ytab1999/8_5_2014_6_41_44_AM.jpg) (http://postimg.org/image/9ytab1999/)
- Maybe it's my imagination, but performance seem to have improved even in screens that never used those animations.But definitely better on screens that had those animations.
I know it doesn't really show in drawing styles of manga or anime, but some characters are stated to be more beautiful then others in the series.Yeap. It's still very subjective trait, but not nearly as subjective as was Cute. And unlike stats, it cannot disappear at all, just like girls pictures cannot be changed at all.
It could be probably simulated just by starting stats in json, but these have very little impact on the gameplay now.
Girlsmeets:
1)
- I dislike the idea of any bars or variables being visible during girlsmeets,
- Will be a (potentially) very complicated function taking into account the actual disposition, classes, traits, stats (including reputation/fame), amount of days in service of the player (if any) and whatever else we can come up with.MC's stats are not the only thing that should be considered here. The bar represents the difference between MC's and girl's social status. When status is too different in a bad way, you have to work hard to hire a girl, and vice versa.
- I am not sure about giving inventory access just because of friendship...What else could possibly enable it? Lovers only? Best friends (disposition 900+)? Or you would prefer to not unlock it at all, except slaves?
2) Disposition based choice if Positive, Negative and neutral responses.Well, in AA2 they use a combination of rng, disposition, girl's mood and dialogue history (the game tracks results of ALL your dialogues with every single character).
What else could possibly enable it? Lovers only? Best friends (disposition 900+)? Or you would prefer to not unlock it at all, except slaves?
Well, in AA2 they use a combination of rng, disposition, girl's mood and dialogue history (the game tracks results of ALL your dialogues with every single character).
Maybe we should try to use percent based system too, when there's a chance of successful interaction depending on several variables (of course we shouldn't show it). During spamming the chance drops greatly.
@Xela
So we have totally different options it seems... that's a pity. I can just wish you luck then... I have no other ideas so would be only repeating myself otherwise.
You changed the girlmeets files I was working on... It seems that you just renamed "random.choice" to "choice" and "random.randint" to "randint", so I did the same in my file... but I'm sorry in advance if that was not all and I messed something. :(
With this I pushed about 100 added girlmeets lines. But I also removed the egocentric, unsociable and mature personalities, as the corresponding traits doesn't exist anymore and I need to figure out a new combination of traits they would fit on... (kinda clueless now). So the number of texts maybe actually decreased :D
Anyway, I'm stopping adding new texts for a while, so the files are free for changes.
INFO PyTFall 0.47 Alpha Loading: JSON Tag Database
INFO PyTFall 0.47 Alpha.tags loaded 24352 images from tags.json files
INFO PyTFall 0.47 Alpha It took 2.25699987411 secs to execute!
INFO PyTFall 0.47 Alpha Loading: Characters
INFO PyTFall 0.47 Alpha It took 0.337000131607 secs to execute!
INFO PyTFall 0.47 Alpha Loading: Characters + IMAGENAME Tags Database!
INFO PyTFall 0.47 Alpha.tags loaded 24335 images from filenames
INFO PyTFall 0.47 Alpha It took 1.56299996376 secs to execute!
INFO PyTFall 0.47 Alpha Loading: Binary Tag Database
INFO PyTFall 0.47 Alpha.tags loaded 24327 images from binary files
INFO PyTFall 0.47 Alpha It took 0.880000114441 secs to execute!
- Auto-buy can be disabled at higher disposition as well, but that's stupid.Please no, that's completely illogical. You might freely enable or disable AE and AB systems for slaves (maybe even allow or disallow to have money at all, like in SM3), but forbid free girls to spend honestly earned money is stupid indeed.
I don't know, it's hard to say if a system like that is affordable in an indie game (development time wise). We can implement my system now and build up on it towards percentage (complex calculations) in the future.Nah, this doesn't require any additional content. We add percents to existing system.
Note that we can save every interaction if that makes sense as well, that's a lot easier than you may thinkAA2 uses it to determine the level of relationships in the long term. You cannot become friends after several very successful dialogues there if you had a lot of bad experience before. Good experience should be > than bad experience for a start.
There is sufficient reason to use filenames instead of json files I guess but that would require yet a new tagger...We have to deal with this problem sooner or later, there is no way to avoid it. Without our own tagger with purely json or xml based tags list we are screwed up. You might as well code it after AB/AE systems, because we will improve tags in the near future anyway.
Please no, that's completely illogical. You might freely enable or disable AE and AB systems for slaves (maybe even allow or disallow to have money at all, like in SM3), but forbid free girls to spend honestly earned money is stupid indeed.
Nah, this doesn't require any additional content. We add percents to existing system.
It might be too complicated to use many variables though. I think we could use joy and/or mood.
- Joy and mood are randomly set for every girl during meeting.
- We could add an option to look at girl to define it, with simple short texts like "she seems upset", "she seems happy", etc.
- Joy is that joy stat that we have already. We could add a couple of simple options to increase it (and get disposition points).
- Mood is a stat (maybe one-dimensional array) that describes what a girl currently wants. Every dialogue option has its own mood value. The more the value, the better the chance.
- We don't have to use both variables, I guess. Though we could try.
AA2 uses it to determine the level of relationships in the long term. You cannot become friends after several very successful dialogues there if you had a lot of bad experience before. Good experience should be > than bad experience for a start.
If you can and want to code it, be my guest :)
We have to deal with this problem sooner or later, there is no way to avoid it. Without our own tagger with purely json or xml based tags list we are screwed up. You might as well code it after AB/AE systems, because we will improve tags in the near future anyway.
I suppose binary is the best here in terms of loading time. It's almost impossible to modify tags without special software anyway (unlike items for example), so we might as well use it if you can code it.
You could try to optimize Rudi's code, but without source code it's a dead end in the long run. You could try to figure out mcmanus's source code (it already is xml based, has more useful functions and seems faster in general). I probably can do it too, but that no doubt will take more time, it's been awhile since I did something useful with coding at my previous job, like 6 years ago or so.
If living decides not to write the software, I'll code one inside of PyTFall itself after I am done with AB/AE.Maybe as a separate project, not inside the game? It should be as light as possible.
You talked about it few times before and now again, but I still don't understand it much. Why do we need a new tagger?Because now we also going to use either names or binaries instead of json/metadata, it's way faster. And there are issues with source code of both taggers.
I mean, it's easy to remove/add tags to the ones we have and how could clicking on boxes with tag names gets any better?
You talked about it few times before and now again, but I still don't understand it much. Why do we need a new tagger?
Maybe as a separate project, not inside the game? It should be as light as possible.
It's SLOW. I mean like sluggish... In order to load all the tags, player would have to wait at the start of the game for 2.5 seconds (Assuming ALL native packs are loaded, made my Dark or you).I hope you don't think that I'm done with packs. There will be more when I won't be needed in other systems. So waiting time will increase as well. I think I'll stop when the game will be unable to load all our packs without crashing :)
I hope you don't think that I'm done with packs. There will be more when I won't be needed in other systems. So waiting time will increase as well. I think I'll stop when the game will be unable to load all our packs without crashing :)
Well, I recall you did some tests in the begining, and at some point the engine just crashed on spot when you emulated too many girls.
I guess we discussed the meeting system enough to have a concept when you'll start to remake it.
Now I'll think about actual options in dialogues that won't require more lines than we already have.
Ok, so what else is new...
1) I managed to solve a problem that came with backbone code from Alkion that bugged the hell out of me. Images kept locking in, meaning that only a single image (of each type) could be used for all interactions, profile pictures and so on. That issue is now fixed and it's a new random image from a respective category each time it is called Smile
2) After a bit of testing I figured this:
For 2 000 000 interactions (around 400 000 girls in game), game crashes on next day.
For 200 000 interactions (around 40 000 girls in game), next day calculations take around 7 - 9 seconds. Saving takes 20 - 25 seconds.
For 20 000 interactions (around 4 000 girls in game), next day calculations take around 1 - 2 seconds. Saving takes 1 - 2 seconds as well.
For 2 000 interactions (a more realistic scenario of 400 girls in game), next day calculations and saving are instantaneous.
So in short, even assuming that next day code will get exponentially more complicated from here on out, neither the programming language nor the framework are likely to crap out on us.
== I am pretty happy right now cause that was my main concern!
cheers sunny cheers
- customizable mobs! We don't using pictures there, so I don't see a point in using arena monsters for automated exploration. That's unnecessary limitation, it should be allowed to create monsters with any names there. ("Cherryzard", "Woodanator"...)Good one :D
collectible item type that you can't use and only sell or bring to NPCs for a quest?Yup, I proposed it too, but Xela didn't want to complicate things.
We don't have to use arena jsons indeed, including monsters strength values, since we have difficulty slider there. I wonder if it possible to find a huge list of monsters names somewhere, like we did for teams names...Hey, that's right. Because the player sees only a monster name anyway, maybe it could be totally dumbified to just name + individual modifier, and all mobs can be just some base class stat*difficulty modifier*individual modifier. What eyes do not see...
Xela, did you replaced fatigue everywhere? I don't have to do it in items and traits?
On my poor laptop, the game takes over 50 seconds to start and show the main menu.
It takes 8 second for my desktop to do the same.
:)
=================
it's no fun man, no fun at all!
My wish list:
- places within explored area. Now you party just randomly gets some mobs to fight and loot or didn't find anything - It's easy but bit boring in my option, I would like to be able to create a settable special places that the team can find. With conditions on how to get there (like % chance, only on 3rd day, only after winning a fight in previous place, flags (for NPC quests and one time only encounters), risk value, etc.), it's own list of mobs and rewards and most importantly a text that will appear on that day report like "party found a forest ruins","was surprised by bandit attack","still climbing towards the top of the mountain"....
- settable items and cash reward lists, like for survival, not just money sum
- customizable mobs! We don't using pictures there, so I don't see a point in using arena monsters for automated exploration. That's unnecessary limitation, it should be allowed to create monsters with any names there. ("Cherryzard", "Woodanator"...)
- time to get there. It's strange to start bashing mobs just outside the city gates on day one - it's ok for forest, but if we added more remote places, it should takes a few days to go there and back. (maintaining advanced outposts or opening magic portals may be an options for the future)
- maybe stat changes? some places may be harden on fatigue to travel through
- collectible item type that you can't use and only sell or bring to NPCs for a quest? (EDIT: I just read your post about crafting - I thing these and materials may not really be "items" codewise and they should appear on some separate lists to not mess the inventory screens if they cannot be directly used anyway)
btw. I managed to get my girls killed in almost every run into the current cursed forest. There is no warning that your team is too weak for this exploration, and then, after 3 days, they're just came back dead. Maybe some common sense for the girls and refusal to fight if odds are this bad like arena girls do would be nice there? It's hard to tell what the "risk" value means from first glance.
now there are two of us 8)
Hey, that's right. Because the player sees only a monster name anyway, maybe it could be totally dumbified to just name + individual modifier, and all mobs can be just some base class stat*difficulty modifier*individual modifier. What eyes do not see...
About the names list - I prefer less randomization there, so it makes at least some sense to run into that monster at each location...
====
Aaa crap! PV for kancolle anime is out and I need to rework the Shoukaku attack animation to show arrows changing into planes... drawing graphics and mixing sounds is fine, but I sure hate all this confusing anchor geometry positioning stuff :(
init python:
config.screen_width=1280
config.screen_height=800
import math
import pygame
MOUSEBUTTONDOWN=pygame.MOUSEBUTTONDOWN
class Ship(object):
def __init__(self, name, sprite, speed, head, size=(100, 49), start_pos=(640, 400)):
"""
name: Name of the ship.
sprite: RenPy Displayble
speed: Speed
head: Heading (in degrees)
size: Size of the displayalbe
start_pos: Starting Position
"""
self.sprite = sprite
self.offset = math.hypot(size[0], size[1])/2
self.name = name
self.speed = speed
self.sprite = sprite
self.head = head
self.show = manager.create(At(sprite, rotate_by(self.head)))
self.show.x = start_pos[0] - self.offset
self.show.y = start_pos[1] - self.offset
self.target_coords = self.show.x, self.show.y
self.moving = 0
@property
def x(self):
return self.show.x
@x.setter
def x(self, value):
self.show.x = value
@property
def y(self):
return self.show.y
@y.setter
def y(self, value):
self.show.y = value
def ships_update(st):
"""
Updates ships data (just coords for now) on the screen.
"""
for ship in ships:
store.ship = ship
# I don't know the pro trick to get this done :(
# Shitty codebit follows (but it works):
x = round(ship.x)
y = round(ship.y)
x = list(x+i for i in xrange(-7, 8))
y = list(y+i for i in xrange(-7, 8))
if ship.moving or (not (round(ship.target_coords[0]) in x and round(ship.target_coords[1]) in y)):
if ship.moving:
ship.moving += 1
if ship.moving == 3:
ship.moving = 0
sprite = ship.sprite
x = ship.x
y = ship.y
deltax = ship.speed*math.sin(math.radians(ship.head))
deltay = ship.speed*math.cos(math.radians(ship.head))
ship.show.destroy()
ship.show = manager.create(At(sprite, rotate_by(ship.head)))
ship.x = x + deltax
ship.y = y - deltay
renpy.restart_interaction()
if ship.x < -ship.offset:
ship.x = config.screen_width - ship.offset
if ship.y < -ship.offset:
ship.y = config.screen_height - ship.offset
if ship.x > config.screen_width - ship.offset:
ship.x = -ship.offset
if ship.y > config.screen_height - ship.offset:
ship.y = -ship.offset
return 0.05
def ships_event(ev, x, y, st):
if ev.type == MOUSEBUTTONDOWN:
if ev.button == 1:
if hasattr(store, "ship") and store.ship is not None:
ship = store.ship
renpy.music.play("picar.wav", channel="sound")
angle = math.atan2((y-ship.offset) - ship.show.y, (x-ship.offset) - ship.show.x)
angle = angle * (180/math.pi)
ship.head = angle + 90
ship.target_coords = (x-ship.offset, y-ship.offset)
ship.moving = 1
renpy.restart_interaction()
define e = Character('Eileen', color="#c8ffc8")
init -10:
transform rotate_by(degrees):
rotate degrees
rotate_pad True
subpixel True
transform centered_rotate(degrees, x, y):
# Only works in show and screen language!
rotate degrees
xcenter x
ycenter y
rotate_pad True
transform_anchor True
subpixel True
screen ships:
$ x, y = renpy.get_mouse_pos()
text ("Angle: %d, x: %d/%d, y: %d/%d" % (ship.head-90, ship.x + ship.offset, x, ship.y + ship.offset, y)) align (0.5, 0.05)
text ("(100, 100)") pos(100, 100) anchor(0.5, 0.5)
text ("(1000, 500)") pos(1000, 500) anchor(0.5, 0.5)
text ("(Center)") pos(640, 400) anchor(0.5, 0.5)
text ("(700, 200)") pos(700, 200) anchor(0.5, 0.5)
text ("(100, 700)") pos(100, 700) anchor(0.5, 0.5)
label start:
python:
manager = SpriteManager(update=ships_update, event=ships_event)
ships = []
ships.append(Ship("Enterprice", "ship.png", 10, 45))
ship = ships[0]
renpy.show("_", what=manager, zorder=1)
renpy.show_screen("ships")
while True:
$ result = ui.interact()
e "Anchor and positioning resets on center."
That simply tells me that we need more reasonable people on the dev team (http://www.pinkpetal.org/Smileys/DarkB/rolleyes.gif) No textbased monsters please! And loot... if you guys really want that sh!t, I'll make it work but you make the useless loot items.That's right, your dev team sux! oh wait :D
Btw, when a girl buys an item, does that item actually disappear from the shop, and girls gold is transferred to the shop?
- places within explored area.I understand this, general and sub-areas are fine. What I was proposing is a level below, maybe better explained as "special encounters"? Something that happen to the exploration party, but it's not unlocked and you can not return to it at will. But I didn't really mean something special to find at all times, I was imagining it more like commenting the route the party is taking.
That's aready in there mate... take a better look at JSON. There is a GENERAL area, within that GENERAL area you can create and unlock any amount of local areas. What's more you can also unlock areas in different general areas so for example from forest lvl 8 you could unlock some new general area called batcaves with 5 levels of it's own BUT only from forest level 8 to make it more fun. This stuff can be expanded... we should add evaluation conditions!, yeah definitely... I'll add that when I get a chance.
[size=0px]Those are not "arena monsters", those are our pytfall mobs and we're going to use them (feel free to add more monsters there!). I want to use the same Areas/Logic (with some expansion obviously) for actual exploration lead by MC if we ever get so far so I need those monsters to have sprites and be loadable into BE. [/size][size=0px]So no, you're not getting this one[/size]So we will have to look for sprites and figuring stats and everything just for the future possibility that MC will be allowed to go there? ...OK I can understand this, but I can't say that I'm pleased to hear that.
[size=0px]SO NO, NO WAY IN HELL ARE WE ADDING ANYTHING LIKE THAT[/size][size=0px] If you don't have the stomach for it, go manage brothels/fight in Arena![/size]Hey, you are making me want to not working on anything exploration related with that... I'm not a someone who will allow a girls to die. But I was only worried about having to load back 15 days or so, that would be unbearable, but now I see that the exploration always ends when a girl die, so its only 1 day to load back and that ok... (unless there will be some unavoidable fights, that would be bad then)
[size=0px]Thanks... that only took me about 10 days to make [/size][size=0px]
I understand this, general and sub-areas are fine. What I was proposing is a level below, maybe better explained as "special encounters"? Something that happen to the exploration party, but it's not unlocked and you can not return to it at will. But I didn't really mean something special to find at all times, I was imagining it more like commenting the route the party is taking.
Is that really no good? I thought it would be awesome thing to do... I can try to figure out the code myself to not bother you, but only if you will not totally deny the idea.
An if.. how do you wanted to add events then? You mentioned them before...
Hey, you are making me want to not working on anything exploration related with that... I'm not a someone who will allow a girls to die.
I like it so far... that why I care ;)
I'm not a someone who will allow a girls to die.Cough, resurrection, cough...
Cough, resurrection, cough...
Cough, resurrection, cough...Thanks, I totally forget about it.
I wonder about that. Maybe more scientific approach as a first step to clonning system...
Like you pay to clone a spare body bound to girl's soul, so if she dies, he awakes in that new body. Losing inventory and all levels and stats changes that occurred after creating that body, except disposition and fame maybe.
You probably need a mad scientist NPC there to give a chose.
Also you could offer an option to update the clones to current level for a price.
The question is more how much do you want to ask for the soul clone (empty clone linked to the soul) and the updating set
I'm fine even with simple "magic" resurrection, but it should be expensive i think. A lot. (needing rare ingredients?)
And probably lower stats a little, or give some bad effect or traits for a while.
now there are two of us 8):D ::) ::) ::) :D
I'd prefer religious/magical approach... I don't like the "cloning" feel when talking resurrection, it adds sort of "unclean" attribute to it.
[size=78%]I am fine with it, I just cannot envision the concept. Events I meant to work as they do during the jobs but we can work out a better system.[size=78%]
[/size]
I'll look at the code in more detail then. I try to came up with a more concrete one then.
Note that I might work on that code as well... We need to figure out how to branch with hg or something if you have trouble diffing the code.no no, I will not write anything to that code, at least not for a while until I understand it better. If I ever do :D
no no, I will not write anything to that code, at least not for a while until I understand it better. If I ever do :D
I was just asking if you want more jsons, as you asked about something like that before. But it doesn't look like it's needed now I suppose, so I can find something else to do.
================
btw. If we decide to go with church for resurrection or for anything else, I'm totally reserving a church assistant place for Zange (http://37.media.tumblr.com/tumblr_lptv8wLdQH1qk4iauo1_500.jpg) to make a fun of a MC if he goes there :P
Cough, )...texts, religion, concepts, NPCs...(, cough...
...
source.say(choice(["Like hell am I giving away!", "Go get your own!", "Go find your own %s!" % item.id, "Would you like fries with that?",
"Perhaps you would like me to give you the key to my flat where I keep my money as well?"]))
Perhaps you would like me to give you the key to my flat where I keep my money as well?Lol :D
Resurrection will be part of the light alignment (resurrection in a good way) and the dark (some necro shit or just skip the dark resurrections).Rising zombie girls, huh? Never thought about it before :)
Make it Cash + Lootable Item ( from exploration only)
This way you will have people doing exploration to get ress item. Since girls will die doing job.... ppl will need more.
Also it won't be trivial in late game where money is hardly problem.
Becouse u kind must want to have your girl to die, since there is no other way to reliably "kill" your girl ?
--- launch game ---
INFO PyTFall 0.47 Alpha game directory: D:\Coding\Dropbox\Dev\RenPy\pytfall\game
INFO PyTFall 0.47 Alpha Starting timer: Ren'Py User Init!
INFO PyTFall 0.47 Alpha Ren'Py User Init! took 0.111999988556 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Random Name Files
INFO PyTFall 0.47 Alpha Loading: Random Name Files took 0.00500011444092 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Traits
INFO PyTFall 0.47 Alpha Loading: Traits took 0.00300002098083 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Items
INFO PyTFall 0.47 Alpha Loading: Items took 0.0220000743866 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Brothels
INFO PyTFall 0.47 Alpha Loading: Brothels took 0.0019998550415 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Tag Database (PyTFall Native Only)
INFO PyTFall 0.47 Alpha.tags loaded 18918 images from tags.json files
INFO PyTFall 0.47 Alpha Loading: Tag Database (PyTFall Native Only) took 1.70499992371 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Characters + Building Crazy Tags Database From Filenames!
INFO PyTFall 0.47 Alpha Loading Random Characters:
INFO PyTFall 0.47 Alpha Loading: Characters + Building Crazy Tags Database From Filenames! took 0.420000076294 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: PyTFallWorld
INFO PyTFall 0.47 Alpha Loading: PyTFallWorld took 0.00500011444092 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Mobs
INFO PyTFall 0.47 Alpha Loading: Mobs took 0.0139999389648 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Exploration
INFO PyTFall 0.47 Alpha Loading: Exploration took 0.0700001716614 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Generating Random girls
INFO PyTFall 0.47 Alpha Loading: Generating Random girls took 0.270999908447 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: testing mode
INFO PyTFall 0.47 Alpha Loading: testing mode took 2.65899991989 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: GirlsMeets
INFO PyTFall 0.47 Alpha Loading: GirlsMeets took 0.0 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Populating SlaveMarket
INFO PyTFall 0.47 Alpha Loading: Populating SlaveMarket took 0.0309998989105 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Loading: Arena!
INFO PyTFall 0.47 Alpha Loading: Arena! took 0.196000099182 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Next Day
INFO PyTFall 0.47 Alpha Day: 1, Girls (Player): 1019, Girls (Game): 1260
INFO PyTFall 0.47 Alpha Starting timer: Girl.restore for all MC girls
INFO PyTFall 0.47 Alpha Girl.restore for all MC girls took 0.0169999599457 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Brothels
INFO PyTFall 0.47 Alpha Starting timer: Generating clients
INFO PyTFall 0.47 Alpha Generating clients took 0.150000095367 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Rest (1)
INFO PyTFall 0.47 Alpha Rest (1) took 0.0190000534058 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Adding info to B report
INFO PyTFall 0.47 Alpha Adding info to B report took 0.00300002098083 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: StripJob
INFO PyTFall 0.47 Alpha StripJob took 15.2939999104 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: ServiceJob(1)
INFO PyTFall 0.47 Alpha ServiceJob(1) took 2.19499993324 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: WhoreJob
INFO PyTFall 0.47 Alpha WhoreJob took 2.10100007057 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: ServiceJob(2)
INFO PyTFall 0.47 Alpha ServiceJob(2) took 0.00399994850159 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: GuardJob
INFO PyTFall 0.47 Alpha GuardJob took 0.00200009346008 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: RestJob
INFO PyTFall 0.47 Alpha RestJob took 0.00300002098083 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Brothel.next_day
INFO PyTFall 0.47 Alpha Brothel.next_day took 0.000999927520752 secs to run!
INFO PyTFall 0.47 Alpha Brothels took 19.7730000019 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: School
INFO PyTFall 0.47 Alpha School took 0.00299978256226 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: Fighers Guild
INFO PyTFall 0.47 Alpha Fighers Guild took 0.0 secs to run!
INFO PyTFall 0.47 Alpha Starting timer: pytfall + calender.next_day
INFO PyTFall 0.47 Alpha pytfall + calender.next_day took 0.993000030518 secs to run!
INFO PyTFall 0.47 Alpha Next Day took 20.7869999409 secs to run!
Lol :D
Rising zombie girls, huh? Never thought about it before :)
Two types of resurrection... Maybe light could actually resurrect, and darkness could make magic clones for our clonning system, since you guys hate science.
I don't want resurrection to be too simple, in both mechanics and explanation. It should not be a random church background with mute priest npc and two buttons "Resurrect" and "Resurrect All" for 100 gold/level. It kills all seriousness of the situation.
Like, feel free to die as long as you have money, nothing major will be lost.
Btw, since you can resurrect androids and even undead, we might as well explain it as a time magic, or as a god of time religion, rather than generic resurrection out of nowhere.
It's too early for light/dark sides.Right, a button "resurrect all for free" in MC profile ::)
We should prolly keep sh!t simple
Those options sound fun, but there should be a catch in the dark side, there always is.
Especially since all those items are quite cheap, while an angel most likely will demand a huge sum.
It's too early for light/dark sides.
Right, a button "resurrect all for free" in MC profile ::)
Didn't have internet at work almost all day, so I killed time by creating loot items, including alchemy reagents.
Hmm.. might only be me or intended but the code to display the buy button in tailor shop got removed.. and the new code for brothel upgrades does not work.. i mean when i click yes or no, no upgrades are added.Added that button back... seems that it was missing for few days, thanks for noticing.
Hmm.. might only be me or intended but the code to display the buy button in tailor shop got removed.. and the new code for brothel upgrades does not work.. i mean when i click yes or no, no upgrades are added.
Dunno about the brothel upgrades, I failed to find anything suspicious in changes to that screen with my limited knowledge, so I suggest to wait for Xela there.
Joking aside, a sum of money depending on characters stats may be all that we need.Reminds me of that movie where money in the future were replaced by time of life, so rich people could live forever while poor ones could barely live at all ::)
Possible candidate for a citymap proposed by CW some time ago:Seems more cartoonish than our current map. And too light and peaceful as well. While our city is not nearly as dark as in Valet, it still has slaves and slaves riots, dying clones, arena, anomalous zones around it.
hmm.. on MC screen after clicking equipment.. the item.. where s the button to equip it ? :p
If you guys are missing something important on the city screen (don't care on which one) I can try to draw that in. I can't create a whole new districts for sure, but changing colors or squeezing one or two more building in may be possible.
For example, in that bright city from Bravely Default, I think arena could fit into that southwest corner instead of that strange rock.
Or in our first darker city, the whole mountain background can be just cut out and replaced with something more warm, so the beach will not look so out of place anymore.
It's pretty hard to imagine what that would look like. Those mountains are pretty too.
It wouldn't be too hard to allow users picking the map but we need some consistency in the game as well. Maybe we can do a poll or something or someone can come up with yet another option. I am going to keep the files for both for now, lets go with the bright one for a week and if that bugs us too much, revert back to the old map (I kinda prefer the old one as well, it just bugs me that it's a bit too dark).
While running game code:
File "game/library/screens/pyt - screens - nextday.rpy", line 12, in script
python:
File "game/library/screens/pyt - screens - nextday.rpy", line 122, in <module>
i.next_day()
File "game/library/classes - locations.rpy", line 317, in next_day
self.finish_exploring()
File "game/library/classes - locations.rpy", line 341, in finish_exploring
for key in area.unlocks.keys():
AttributeError: 'list' object has no attribute 'keys'
This happen when I go exploring to any second location (like forest 1-1)
May I ask what each of those numbers in fg json mean?
"mobs": {"Orc": [10, [2, 0.5, 6]], "Earth Elemental": [8, [1.5, 0.5, 6]], "Goblin Archer": [60, [3, 0.5, 10]]},
"unlocks": {"Cursed Forest lvl-1": 30},
Also, there doesn't seem to be a maximum/minimum number of mobs in group, may I ask for it? I would like for some monsters to always appear solo...
Code: [Select]While running game code:
This happen when I go exploring to any second location (like forest 1-1)
File "game/library/screens/pyt - screens - nextday.rpy", line 12, in script
python:
File "game/library/screens/pyt - screens - nextday.rpy", line 122, in <module>
i.next_day()
File "game/library/classes - locations.rpy", line 317, in next_day
self.finish_exploring()
File "game/library/classes - locations.rpy", line 341, in finish_exploring
for key in area.unlocks.keys():
AttributeError: 'list' object has no attribute 'keys'
Hi,
When are we getting the next update? :(
I have another good question! Why are you so insist on adding that Rukia mast animation? How and where are you going to use it? :D
City map looks pretty good btw. But I like the old one too. Maybe we should use both, one map won't be enough for all locations anyway.
I tested new systems a bit. Badness 100 does not prevent purchase for some reason, they buy Slave Shackles like there is no tomorrow ::)
Also, there is a huge gasp between owned and equipped items. It's not unusual to see girls with 30+ owned and 0 equipped. I'm not sure I like it. Maybe it's because they have 10000 gold from the start and cannot spend it on something else though. We need more interesting ways to spend gold, I guess.
I have another good question! Why are you so insist on adding that Rukia mast animation? How and where are you going to use it? :D
City map looks pretty good btw. But I like the old one too. Maybe we should use both, one map won't be enough for all locations anyway.
I tested new systems a bit. Badness 100 does not prevent purchase for some reason, they buy Slave Shackles like there is no tomorrow ::)
Also, there is a huge gasp between owned and equipped items. It's not unusual to see girls with 30+ owned and 0 equipped. I'm not sure I like it. Maybe it's because they have 10000 gold from the start and cannot spend it on something else though. We need more interesting ways to spend gold, I guess.
@Klaus:
The long story is too long which wouldn't really be an issue unless it felt like it had too much story in it irrelevant to the game, it's something we should have some ancient NPC dude tell to the players who love lore/history in games. Short story is too short :)
So tonight I'll set up a label which will load the intro to the game and add a button to run that label from the mainscreen. I'll put the long version with slightly improved grammar (done by me so only slightly improved :) ) of the long text and we'll all contribute by cutting/adding/animating and etc. (if you don't mind).
Hey, anything decided on slave training module yet ?Lack of clear and decent concept prevents it. Feel free to share ideas.
Make them both PyTFall but split in time. The bright could be the beginning stage, let’s say year 10-20 after establishing the city, and the current dark city would be year 100-120 after PyTFall grew bigger. The transition period could be a prolog (or a tutorial stage) about the MC Father/Grandpa and a chain quest that would lead to some disaster that changes the surrounding (spell went wrong, bloody rebellion suppressed with magic, demon attack or some other shit hit the fan).But then we'll never be able to use the bright version again. Would be a waste, I like both.
I think we left some garbage in gfx folder. Those mobs and old hero profile in sprites folder, frame folder (do you still use those old frames?), masks folder (I think we don't use them at all).
- Added decent code to load items from filenames (commented out atm)Careful with that. The reason why it's reasonable to load tags from filenames is because image tags are unordered sets of the same unnamed data type - so a complex data structure would be wasted on it.
Hey everyone!
Oh my... seems like I've missed a lot just because I was gone for a few days. I skimmed the last few pages and there are a few things on my mind:
First, the discussion about exploration times.
Actually, this has been on my mind ever since I played the first BrothelSim (the original) - why does nobody consider using a time based system instead of action points? Yes, it would require slightly more code, but I think it is more intuitive and a lot more flexible. Every character (including the player) can have work times (e.g. 8 am to 4 pm for the player, 4 pm to midnight for prostitutes - depending on constitution, etc.) and every action (talking to a girl, having sex, whoring, etc.) takes time to finish.
What do you think about such an approach (general opinions wanted, details can be worked out later)?
Second, about this little note:Careful with that. The reason why it's reasonable to load tags from filenames is because image tags are unordered sets of the same unnamed data type - so a complex data structure would be wasted on it.
Items however consist of several different, named elements with different data types, so using a more complex data structure (JSON is well suited) is most likely the better choice here.
And yes, binary is faster (it always is if you can come up with a clever format), for both tags and items. However, the primary goal was to reduce storage redundancy, not to make the data unreadable for humans.
Third, the optimization of reading tags from filenames.
I just want to mention that the screenshot looks absolutely awesome to me. So much data at a single glance!
Just from looking at it I assume you have two static identifiers and 260 (26 chars * 10 digits) possible tag combinations that are not ordered alphabetically. How many of these are used right now? And, more importantly, do you have a hashing system in place (that calculates an array index that stores the actual tag from the tuple)? If yes, great! If no, that could speed things up.
Finally, the tagger.
Let me ask this first: Who is mcmanus and where can I find his code? C++ is no big deal and I at least want to give it a look (maybe I can steal his ideas :-\ ).
And to give you a (relatively) clear statement: I can and will code a tagger (and possibly a complete character editor) if you are fine with an external solution that has nothing to do with Python. No deadlines and promises (freelancing ftw).
(http://www.partage-facile.com/LL3NE3I2W6/nextprevcell.psd.html)
???
I love how that partage-facile thing demands to disable both noscript and adblock before showing the picture ::)
Generally, there is nothing impossible here. However, Jack-o-nine tails uses multiple variables to emulate psychology, and no one but Old Huntsman knows how exactly all this works (if he hasn't already forgot everything (http://www.youtube.com/watch?v=AOYuRKW17kM)).
Aside from that, you propose upgrades for cells and general gui. That's hardly a concept, sorry. It does not describe the training process mathematically or logically.
well i understand QSP its realy easy but to translate that into python thats another story.. might need to learn it more than im able atm
To clarify: they do equip items. However, it's usually 2-3 equipped and 20-30 not :)
http://www.partage-facile.com/NEGELPGPYN/teach_screen.txt.html (http://www.partage-facile.com/NEGELPGPYN/teach_screen.txt.html)
trigger interactions.. only usefull if you dont know witch interaction is what...
http://www.partage-facile.com/BDGDL4YRW2/interaction.txt.html (http://www.partage-facile.com/BDGDL4YRW2/interaction.txt.html)
list the different interactions.. some arent training related but you will see some use more parameters than the kiss interaction
http://www.partage-facile.com/6TOIG49R1H/interaction_result.txt.html (http://www.partage-facile.com/6TOIG49R1H/interaction_result.txt.html)
list the result of different interaction types ( i used the self teaching the 1 with less parameters )
http://www.partage-facile.com/KVSOK6GDDX/_dynamic.txt.html (http://www.partage-facile.com/KVSOK6GDDX/_dynamic.txt.html)
functions called from this file
some code isnt translated as its battle code or alchemy i didnt finish those and need to be fully translated to work else crash so didnt do that atm..
if i forgot to add some function used in outside files other than ( energy/mood/.. ) you wont use let me know
Also the way MC gains skill teaching girls a certain category ( petting/oral/sex/fetish ) or job related ( teaching ( general skill gained for non sexual training ) or ( maid/cook/nurse/dance/secretary/music/vocal/secretary/acting/...)
some gear boost base MC teaching skills.. butler/doctor/... ( your limited by your own skill for teaching a girl a certain profession ) but your skill xp teaching that profession increase each time you teach a girl
so in the end after a few slave your maxed to train that profession.. or if you want your girl with skills above yours right away.. trainers have more skill than you but you need to pay them or send the girl to school to learn skill trainers dont have ( you need to go with her or send assistant with her )
Ever played SIBR1X.. that game had a useful girl planing system.. you could manage the time of everyone efficiently atm on pytfall its hard to predict who goes on rest and who starts working so you end up with too many ppl working on the same thing making you lose money ( too many dirt generated ) :p or not enough ppl for that job..
it also had skills point gained each lvl to spend on skills or special skills to do a kind of job/action much better
had also funny texts like ( customer came but missed target and it ended up in the girls eye!! - 10 hygiene ) or something close to that
yeah used hygiene system but easy to manage with upgrades..
" your girl was so dumb she didnt think of using lube before anal sex - 10 hp " or something
girl xxxx brown hair causal dress log
cutomer wanted a blonde nurse for some....
girl xxxx int check
gril xxxx cos play skill check
grill xxxx used blonde wig with nurse outfit.. ( matched traits ) :p actually need to buy the wigs and cos play outfits from shop
also there was a market to sell girls for large amount of $$ within time limit ... a brown / big boobs / service lvl 5 / cos play lvl 3 / advertising lvl 2 / ...
Our girlsmeets concept is borrowed from there, some others as well. We don't need that planning system, there are faaar cooler things we could do like adding a really smart matron to the brothels + you have a very high degree of control, it's just often too much of a bother to try and plan out the whole thing and manage the business when it's so much easier just to click on the next day. It's not "hard" to predict anything btw. Low vilatily or low health means that the girl will go to autorest (unless) it's turned off. You can also auto-hire cleaners to mitigate the cleaning problem.
**I should note here that PyTFall has a shitload of possibilities that are not implemented. We have traits, girlsmeets, interactions, events, jobevents, all sorts unique girls customizations, possibility to add quest system, possibility to add all kinds of crafting, farming, gathering, exploration and so on. Ideas are plentiful, time to implement them is limited, we need clearcut concepts of interesting systems that can be added to PyTFall with as little messing with game's stats, traits and other concepts as possible. We've been discussing and digging through general ideas for a lot longer than this game been developed, what is in trully short supply today are written concepts on expanding the game because they are hard (MUCH harder than programming them, of that I am now certain). If you're up to the task, write one for slavetraining.
Well, they'd generally try to equip items that are best for the job. They don't seem to equip anything at the moment, maybe I didn't test it enough. But there seems to be an issue with the Rest class, going to take a look at it now.Did you test it after fixing badness? Maybe it's because they buy useless things, either because of reversed badness or too much rng.
Cool i missed the Matron job.. but how do you check on girls vitality.. is there a warning on the end day summary or you mean check every girl hp every turn going to the girl stats screen ( that would be a pain )well for whore job going on auto rest.. thats fine but guards.. thats a big problem if all or more than half does it at same time or does MC still defend the girl if he has ap left ?, service/strip jobs auto rest isnt good either.. and i dont want 3 striper doing the job of 1 to make sure 1 is always up.. same for the bar.. cleaning well auto cleaning is fine.. unless code was reworked ( have to test playing more ) in the old version it would be impossible to survive 30 days.. without good $$ management making every job work using the min ppl
edit: also did tax go ? or was it reduced.. i dont see it in reports.. the few turns iv made made it way more easyer than before ( i guess i miss the 5k+ taxing ) lol
maybe add a warning when a girl is taking a rest in the summary ( dont need to be in the big red ! ) but woulnd mind if it goes there for now.
From memory.. the best breaking a slave into submission i remember comes from CRF ( custom reido fantasy ) the interrogation part:
you capture a girl.. from there you have a x number of days to break her/and make her reveal rare items locations ( maybe doesnt need a time limit or reward from it or pytfall )
first you need to break her resistance ( will ) then when broken ( will regain some will every day unless you start make her submit to you daily )
then you break her pride doing shamefull things to her or reason doing things like abusive candle torture :p ( i didnt like the huntsman gore part and never translated it )
there was 3 or 4 steps but dont recall em right but it was a good addition to their genaraly good slave training ( too bad you coulnd train the interogated slave after that )
was limited by her max physical/moral hp (regained every day unless you overworked her then had a penalty on her max hp regen ) every breaking action would either drains phys or moral or a bit of both
if you never played that game i recommend it for more concepts:
MC is a vampire girl( ermm boy ? ) that woul feed on trained slave if they did bad deeds like havin 100-200-300 sex skills in many catrgory ( gives a stats like debauchery MC could feed on ) to gain mana point ( those where used to upgrade MC training stats or spend to explore location ammount was higher if distant location ) also used to capture a girl i think
best to feed when that stat like debauchery was at max as it reduced physical/moral strength by 50 of the girl
you could make 2 owned slave breed together ( strange ) but would result in a slave with stronger physical/moral strength
( could use a breeding system in pytfall .. train a girl make her gain traits and good basic stats then get her pregnant .. result could mix girl stat with MC stats or make a screen to pick what you want or dont ( only if you got skill at that ex: MC trait Master breeder ) :p
rest was common stuff..
ill try to get all the good concepts and condense them.. but i would need to know what skills/traits/stats your willing to use for those and might add something like obedience or maybe something realy needed for concept to work ( as you dont want to change too mutch the code ) or maybe ( on slave training module use more stats/skills to gain traits that could be used in main part of the game where those extra skill/stats woulnd be needed as the trait is already gained )
also could lose the trait with some red events event in game .. then girl would require retraining that/those traits( for slave i guess ) free girl would use teachers or something else or some date/interaction to gain it back.. unless you plan of enslaving them if they bad grils :p
Did you test it after fixing badness? Maybe it's because they buy useless things, either because of reversed badness or too much rng.
I've seen warriors equipping weapons occasionally ::)
you capture a girl.. from there you have a x number of days to break her/and make her reveal rare items locations ( maybe doesnt need a time limit or reward from it or pytfall )Ok, let's theorize a bit. We already have character (strength of personality more or less), and we'll add obedience as another stat most likely.
first you need to break her resistance ( will ) then when broken ( will regain some will every day unless you start make her submit to you daily )
then you break her pride doing shamefull things to her or reason doing things like abusive candle torture :p ( i didnt like the huntsman gore part and never translated it )
MC is a vampire girl( ermm boy ? ) that woul feed on trained slave if they did bad deeds like havin 100-200-300 sex skills in many catrgory ( gives a stats like debauchery MC could feed on ) to gain mana point ( those where used to upgrade MC training stats or spend to explore location ammount was higher if distant location ) also used to capture a girl i thinkMight be useful as a trait for MC, when he'll have them in the future.
( could use a breeding system in pytfall .. train a girl make her gain traits and good basic stats then get her pregnant .. result could mix girl stat with MC stats or make a screen to pick what you want or dont ( only if you got skill at that ex: MC trait Master breeder )Yup. If you have any fun ideas how to explain acceleration of pregnancy in order to not wait 9 months + 14-16-18 years (depending on your local laws), feel free to share.
Yup. If you have any fun ideas how to explain acceleration of pregnancy in order to not wait 9 months + 14-16-18 years (depending on your local laws), feel free to share.
Actually, some kind of concept is needed here too. Just set pregnancy time to 30 turns and breed them like there is no tomorrow sound pretty lame.
But we probably could use morality as another stat. So you need to corrupt them too, that's not too hard to implement in many parts of the game and it's pretty fun too.
If that tank got used you could even add genetic modification to the baby ( aka traits/base stats boosts ) well would depend on how far you want to develop the ideaWe thought about clonning system actually, when you use genetic info from some girl and try to build a clone within required parameters, with clones having limited limited lifetime that could be increased for a huge enough sum (thus, clones should be useful to be profitable).
I'd say if an item is not used for a job, it doesn't mean that it cannot be equipped. It just means that it has lower priority than items that used for a job.
Better to equip something (if eqchance is not 0 and it doesn't decrease used for a job stats) than nothing at all.
They just should check from time to time if they have better suited for a job items.
While it's not really an issue, it will inevitably rise questions why girls sit on full inventories with empty slots.
Btw, another question. How often do they try to buy items, and how many items they can buy at once?
Hmm that no ST but Slave capture acquisition.. you could ask ( if dispostion with girl you talked to for nasty rumors/pictures on girls she might know so you could use those as blackmail or just bribe it out of the girl ) or from information provider then it would need a way to contact her like with phone or internet to decide on a meeting place ( event location ) then you could have another interaction topic with the girl where you could use those information to corrupt her ( that would be like another bar in the screen ) girl would do things you ask by either using disposition bar or corruption bar..
not sure it could be implemented but could be fun to have 2 way or acquiring the girl.. and corrupted girls could maybe do other kind of jobs like killing/bribing/or run shady organizations that would make profit from dirty money.. or could have a even less disobey rate since you got he on a leach for life..
and of course you could train her as slave for those job
or maybe let her free but would need to think on a way to train her for that kind of jobs... evil/shady trainers ( might get those if your evil enough or unlocked doing some quests )
well i guess she could try to recover that blackmail stuff from you.. need to think on how..
Ok, let's theorize a bit. We already have character (strength of personality more or less), and we'll add obedience as another stat most likely.
Let's say that the higher character, the more difficult (though never impossible) to rise obedience. On the country, the more obedience, the more difficult (though never impossible) to rise character.
Thus, you can break them quickly by removing character stat out of the way, but they will be spineless then.
Now, pride is somewhat difficult to implement as a separate stat if we already have obedience and character. It's not hard to add training options that will reduce it (all those superhumiliating things from Jack-o-nine tails), but other than that I'm not sure how to use it in the game. Character is pride more or less, I guess.
But we probably could use morality as another stat. So you need to corrupt them too, that's not too hard to implement in many parts of the game and it's pretty fun too.
Might be useful as a trait for MC, when he'll have them in the future.
Yup. If you have any fun ideas how to explain acceleration of pregnancy in order to not wait 9 months + 14-16-18 years (depending on your local laws), feel free to share.
Actually, some kind of concept is needed here too. Just set pregnancy time to 30 turns and breed them like there is no tomorrow sound pretty lame.
We thought about clonning system actually, when you use genetic info from some girl and try to build a clone within required parameters, with clones having limited limited lifetime that could be increased for a huge enough sum (thus, clones should be useful to be profitable).
Pregnancy should be a little more different, I believe. With little to no control over outcome and more time required, but with more stable results.
Lowering character will only be an issue if we include character bonuses to the jobs.We will if we must in order to make it more useful.
Cloning is gamebreaking if you could clone any character. Cloning is gamebreaking if you could clone any character. It should be beyond expensive, in area of the millions only for the most privileged in PyTFall.Oh god, where this nonsense came from? ???
I ask again, how many items they can buy at once? ::)
Oh god, where this nonsense came from? ???
You clone their picture set (the main reason to do it, it's almost fanservice, I'd say) and some traits, nothing more, no level, stats, items, etc. Because they got those levels, stats, items, etc. not from genetics.
Not to mention the need of genetic material (=very high disposition or slave you already own) and big monthly fee. It's more like an alternative for brothels and arena, making and selling clones, and it should be just as profitable.
Wasting millions on relatively useless clones and calling that endgame that's what gamebreaking, pardon my English.
3 items per shopping tour at the moment.Probably too many. They fill their inventory too quickly. It still could be 3, but how about 60% chance for a second one and 30% for a third one?
Common sense, if cloning is cheap and you could clone highleveled characters, there would be nothing but wars.Yup, that's why I never even considered the option of 100% clonning. I'm surprised that you did :)
About character, this is well explained by Old Huntsman somewhere. You can break them completely, but no one wants a completely broken slave, people prefer obedient but temperamental ones.
About character, this is well explained by Old Huntsman somewhere. You can break them completely, but no one wants a completely broken slave, people prefer obedient but temperamental ones.
Probably too many. They fill their inventory too quickly. It still could be 3, but how about 60% chance for a second one and 30% for a third one?
Yup, that's why I never even considered the option of 100% clonning. I'm surprised that you did :)
are slave only trained to work for you or will we be able to sell em for profit ?
but would require specific training meeting demands of ppl looking certain skills..
when ever you capture a girl or buy it from market.. chances are she could be really resistant( or not )
would require both types ( some free girl might have had RL submission experience while some slave basic obedience training )
rest would have a range from x to x base character from file or dice or defined range
i would like to have the slave in training with full slave gear then remove parts as she gets more obedient
( main problem is current items remove 110 character in stat and 65 in MAX ) what would be the starting character ???
well mabe you can get/buy slave grils with different starting lvls their max starting character shoulnd be above 110 tho
as for the low lvl ones maybe equip just enough items to reduce it to 0 then do the training and removing those items
( or could jut got with -110 on everyone so they would require same training and that way they would require the same items to be removed
with character reduced to 0 as it wont go below 0 training would require the real value of character without items like ... Character xx/xx (xx)
(xx) would be the number to break to break her resistance..
while (xx) get reduced enough to remove an item you will be able to do so.. and use another item in its place to help the training of a certain course
every action to reduce (xx) sould give some obedience but as long as theres (xx) there is a chance for the slave to resist training..
then she should be punished with some actions.. that will drain her vitality.. failing to do so will increase (xx) while if you punish her you get more obedience points
some training actions should require the slave to have a certain number of obedience points
also wil jobs going to have sub class or upgrades like whore has ?? need to know that to orient training for slaves..
About character, this is well explained by Old Huntsman somewhere. You can break them completely, but no one wants a completely broken slave, people prefer obedient but temperamental ones.
Probably too many. They fill their inventory too quickly. It still could be 3, but how about 60% chance for a second one and 30% for a third one?
Yup, that's why I never even considered the option of 100% clonning. I'm surprised that you did :)
POSSIBLE SLAVE TRAITS
dedicated ( after days of training her refinement got broken and her obedience maxed ... this slave woulnd not refuse any of your order ) could use different lvl of the trait you should
train the slave with...
Starving Mastered ( after day without or minimum food this slave uppkeep is reduced to a minimum food wise ) could also use ranks using different names
SDF ( after living in a cell for days she got used to live with no comfort at all tis will reduce her uppkeep on loging ) could also use ranks using different names
Alluring Mastery ( spending all this time trying to improve her looks she get more client potential than others" could work for many jobs" ) could also use ranks using different names
fake orgasm expert ( you fake it if skill rank high enough client will not notice.. while saving an AP for a next job if successful ) could also use ranks using different names
Story teller ( your nevern ending story talks make your customer stay at the bar and drink.. beware fight may trart if they got too drunk ) could also use ranks using different names
VIP Godess ( your stripping skills where trained so well ppl want you to make personal private show in VIP room paying even more ) could also use ranks using different names
TIP bucket ( whatever you do you get tips for every job you do ) could also use ranks using different names
well need realistily doable traits thats just some basic idea
xxxxxxxxxxxxxxxx specific job related.. need to know what your planning first
We discussed cloning before and the premise was full cloning with magic completely blocked off unless I misunderstood the discussion.We never actually discussed stats themselves, I think. I always presumed that we should reset them, simply because otherwise it will be waaaay too profitable instead of just fun and unusual. We still can add 100% cloning too for insane amount of money, if you want it, but I dislike its overpowerness. Maybe if it also will require some rare drop-only item...
We could add more traits I guess, not sure if that's really required (my hidden flags idea would work better I think).Well, they sound like a part of hypothetical skill tree rather than traits.
Well, they sound like a part of hypothetical skill tree rather than traits.
- Definitely also selling for profit.
- Sure, we already have traits, stats, levels, experience and I've also suggested flags that will provide info about what job/task a girl would be willing to do without objections.
- Yeap, there is always a chance she's a very resistant level 300 buffed up character with maxed out battle stats that got captures just to have some fun and will beat you/security to escape. Girls can already be quite different from one another... we can also obfuscate stats/traits for captured girls until you/trainers spent some time training them, figuring them out. That wouldn't be very difficult.
- Sure, all slaves sold at the market should have full obedience training. Untrained slaves can be bought asking Stan to sell some to you.
am not quite sure that I follow. I think that all items/traits that reduce the maximums should be removed from the game or redesigned just like all items/traits that push minimum out of range were redesigned. Right now there is a good amount of items that when used, reduce the maximum below 0 completely f#cking up some part of the game. Code that would be required to mitigate that is very complicated and would be hard to work with just as it would have been for minimums. I've noticed that after the recent items review.
We could also use real stats instead of stats that have items applied to them for parts of the training (like really important parts, setting final flags and such).
We can use flags and real stats instead of items once for when it really matters. Items could make training itself easier, getting a girl to get to submit could simply require a number of flags (based on traits) and checks vs her true stats instead of item once, once again mitigated by traits/flags. (by flags I mean counter of how many times she undergone specific training sessions successfully). I think that would be a decent approach.
We could add more traits I guess, not sure if that's really required (my hidden flags idea would work better I think).
*Traits/Items are Dark's domain.
Ok will you make a system of slave buyers that randomly or user defined ask a girl type with certain traits acquired using training could be more than 1 offer ( also offer validity could have a time limit ) this could improve gameplay trying to find that type of girl then acquiring her by capture/buy from marked/sold by stan then train her as offer requires then sell her for profit..
For resistance maybe you could make basic items sold at shops while if you need stronger items you could craft em from exploration loot, you could use different lvl range of items that restrains her the stronger the restrain the rarer the crafting components would be to find ( or would require you to somehow beat a monster/npc of really high lvl )
also items that would impair her battle skill to some extend could be useful ( again could use basic version from shop to start with then would need crafting )
might also think about security upgrades.. like special holding cell that can be upgraded with basic upgrades then with crafting and specialized guard jobs to watch out the captive
hidden trait would be awesome.. this is a great option for MC to train a skill to identify the type of girl and he would learn it as he trains those slaves but even without that skill MC could learn that girl stat/trait training her.. might use some verbal sentence to find out about it but would also contribute on breaking her
then the more physical approach like slapping/torture ( doenst have to be harcore .. could use a feather until she reveals some of her hidden stuff and get obedience trained at same time.
also slaves sold by stan could have hidden stats like captured girls unlike slave market full trained slaves and traits skill revealed
this would add the fun of finding out what you inherited lol and train her in a way she could make some profit for you or if her stats match your needs train her to make her work for you
Well would definitely need items to start training the lvl 300 boosted battle girl like proposed on first quote
as for submit lvl .. using obedience lvl could be a first check since every slave should be trained with it then job specific traits the reduce refusal chance even further
ex: slave whore maxed obedience ( first check ) may refuse job because joy too low.. vitality too low or customer class too low or she just doesn't like him..
then goes thr prof trait check like whoremaster ( j/k ) need to think of trait for each jobs those could have ranks to make em even more potent.. this trait lessen even further the chance for her to refuse that kind of job while a free girl not slave trained would refuse right away
mentioned ranks for prof specific traits would increase with successful training sessions
No need to overcomplicate things with ranks + traits. Frags as counters will be more than sufficient to track training process and we don't have the resources (time/manpower) to code the jobs checking all of that cr@p. It is not very likely to make training more interesting/iterative either.
hmm other than breaking her character and training obedience thats all ST will be about then ??
Right now there is a good amount of items that when used, reduce the maximum below 0 completely f#cking up some part of the game. Code that would be required to mitigate that is very complicated and would be hard to work with just as it would have been for minimums.Ah jeez, not again. You can't even make decent items without breaking something these days :(
well that and stats boosting by training .. no already in game trait gain doing some training ?
i mean we would need a way to gain traits that are in game to meet demand of potential npc buyers for the slave
**Stats, yes.
Traits no, it would mean that any girl could be trained to the satisfaction of any costumer. That's one of the crappiest, most useless (imo) concepts with games that focus on slavetraining... Girls are unique, customers are unique... at least that's my opinion.
"Name Of the MOB": ["Chance to encounter": ["Initial Multiplier", "Per extra day multiplier", "Maximum multiplier"], "Maximum size of a team if one of this mobs is present"]
Flags... If those flags will be invisible, how can player track any progress here? If he can't, do they matter much? I don't think so. The game is about visible progress (and h-pics ::) ).
Besides, most of the things lamoli mentioned are not exclusive to slaves. Free girl can become a fake orgasm expert as well, there is no reason why she cannot after a certain experience obtained.
But I cannot call them traits at the same time. Trait is something major and permanent that has multiple checks all over the code.
I recall we discussed possible small skill tree for girls at some point. New suggestions just mean that some of skills at that tree will be available only for slaves.
Ah jeez, not again. You can't even make decent items without breaking something these days :(
Traits can do it too btw. If I'll remove all these cases, it will damage the concept, badly.
ok ic .. would make even more challenging if not impossible to find the girl who has both the the type and trait needed for slave order.. stats dont matter as you can train em
could result in a money sink rather than gain training those slaves for cash,, and with the hidden stats/traits you woulnd event know if you spend zillion of cash or hours training girl for something.. or not
about traits let us train some of em since lots are already locked by existing traits that counters them.. just make sure they unremovable and add a really low chance to gain trait after a training session
i guess you should lock traits from slave bought at market those with non hidden stats/traits.. but stan/captured girls ( if not unique ) should use a system that adds random traits and base stats then if you want to train a trait that isnt blocked by randomly generated trait why not.. you will be randomly limited on what you add but would be able to do some little customization
hmm could be limited to able to do job better traits..
service...
barmaid .. skilled to serving drinks
maid... able to clean efficiently
waitress.. able to serve dinks without spilling it on ppl
unless you already have something that makes em do their job better other that basic service skill stat
or last resort unique/generated character will have a random hidden trait/flag making em able to do 1 job better than others but with non too severe conflicting traits that would impair the job
pushed some pics and mobs that I want to use for fg testing.
now only thing stopping me is that unlock error for new locations
---------
Also:
¨multiplier of what? increasing that chance to encounter?
and also for the mobs stats - what is charisma used for? I have no idea what monster types should have some charisma stat and who don't (what for human? animal? golem?...)
EDIT:----------------------------------------
btw. if you want customer sprites, just tell me, shouldn't be hard for me to create some. (sounds like a fun thing to do)
If you have time, sure, some generic NPC sprites would be welcome. Maybe we can start using them even before slave training (selling captured girls).lol "generic NPC sprites"
lol "generic NPC sprites"
please don't use such vague descriptions. Are we still talking about sm customers right? I'm imagining primary some businessmen and those ugly fatty traders and alike... or not that?
But the most important questions is about the size - how much of the body needs to be visible. Because the less, the more easier it is to get some (portraits = super easy, full body= almost impossible to find)
------------
for fg
Thanks for figuring it out
I try to make my location work and send the json in few days.
lol "generic NPC sprites"
please don't use such vague descriptions. Are we still talking about sm customers right? I'm imagining primary some businessmen and those ugly fatty traders and alike... or not that?
But the most important questions is about the size - how much of the body needs to be visible. Because the less, the more easier it is to get some (portraits = super easy, full body= almost impossible to find)
Why do you assume very limited or fixed demand? We could have a general request agency that is tracking hundreds of clients requests for all types of girls... access to their list = small subscription fee or % of the sale.
We can make a json file with demands for stats, items, traits and traits versus a multiplier for the girls generic market price. Each would have a short description and never be exactly the same as the last one (randomly chosen from a range as I've said). We could also have unique clients and events or even run a shop in the guild offering trained girls at specific prices (generic price + x%) and advertising for a better chance of finding a client. That's interesting and requires very little coding + A LOT OF WORK can be done in just preparing data like we do for items/traits/area/exploration and etc and can be done by someone who can give it enough thought and knows the concept.
Another thing, slaves should also be race related, I'd love it if elven slaves were rare and very hard to come buy due to elven embassy that makes lives of slave trainers/owners of elves really difficult somehow. Somehow is the problem, most ideas I have on that front require a lot of writing/conditioning :(
Anyway, we can always add something like that later.
Some flags could be revealed during conversation/just setting a girl to work, hence making it a "visible" progress.Yet now it seems that we going to use it. The difference between skill tree tab and tab with flags is name. I never proposed that skills should be under full player control too.
We decided to drop that in favor of traits.
Than we need to expand the concept...Sounds very complicated :D
Items have gotten too complicated, they can:
Add a trait permanently
Add a trait temporarily
Track if a trait that was added temporarily doesn't remove a trait that was there permanently when reversed
Add a permanent trait when their is a temporary trait in place
Remove a permanent trait when there is a temporary trait in place
Add stats after being work for x number of turns
Mod stat temporarily
Mod stat permanently
Mod max stat temporarily
Mod max stat permanently
Make sure items do not take stats with them when they are removed if those stats were maxed out already
Make sure that items do not prevent the ability to gain stats while those items are worn
I prolly forgot a bunch of stuff + I doubt all of this is actually used or been properly tested. Traits themselves complicate it all even further...
i was saying arch type or girls like ( tsundere , yandere , .. ) but why not also add race.. like Elves: mountain ( the usual ) high ( with glodenish skin ) drow ( aka darkelves )Because there are hundreds of races. Also, I'd like to see how are you going to make a decent pack with glodenish skin elves.
lol "generic NPC sprites"Why males only? In SM3 there are female customers as well.
please don't use such vague descriptions. Are we still talking about sm customers right? I'm imagining primary some businessmen and those ugly fatty traders and alike... or not that?
Why males only? In SM3 there are female customers as well.SM3 have generic customers? It wasn't the case when I last played it, all of those people in that game were full fledget NPCs.
Because there are hundreds of races. Also, I'd like to see how are you going to make a decent pack with glodenish skin elves.
You could do some search at forum if you want, we discussed races already and decided to use base race concept as a separate filed.
Nope, there are random people coming to you and proposing to buy your slave from time to time. They are not npcs at all.OK, my mistake... I probably only played that part with limited time.
BTW. I wanted to ask you, what do you think about limiting the number of profile pics for random girls? One of the wm versions locked a randomly chosen profile image for each rgirl at their creations, while still using a full range of h-pics for each of them. It helped a bit to create the feeling that they are not the same girl...
I think you are making the slaves too one dimensional. Other st games are also like that... slaves there just refuse everything and after "breaking" they accept everything. Only thing they do there is to run away to be found a few days later again.
I believe they should show at least some intelligence from time to time. Like playing the obedient one and then stabbing you in the back.
Im for that idea aswell but had to think of basics first then expand possibilities ex: running on a bad even during training event if shes obedient could make her run to try to assault you.. thats why you should equip her with impairing battle stats gear too..OK sorry... Dunno why I posted that when I actually decided to not comment on st module earlier... Silly me, like if I haven't something else to do ::)
OK sorry... I actually decided to not comment on st module earlier... Silly me, like if I haven't something else to do ::)
they could use pics you know from other random ones or worse know chars ( iv seen that with elves a lot )Just so you know, all those known characters have so few pics that it's impossible to make a separate pack for them, yet it would be a waste to not use them at all. I don't care about it much, I have powerful enough imagination :)
I wanted to ask you, what do you think about limiting the number of profile pics for random girls? One of the wm versions locked a randomly chosen profile image for each rgirl at their creations, while still using a full range of h-pics for each of them. It helped a bit to create the feeling that they are not the same girl...The main problem here is the difference between random packs origin. While elven packs based on random elven pics I found everywhere, others (like winXP androids) based on actually existing characters that don't have a personality. Would be strange to limit them, don't you think?
LoL
"Fuck this, I am going home!"
during the frog event is voiced as well :D :D:D
qq1: throw in the resurrections into the light and dark info or skip them for now?Nope, yeap, nope :)
qq2: does the WIND alignment/element also contains lighting base spells?
qq3: add descriptions of peoples characters to the descriptions, (hothead for FIRE, silent and strong type for EARTH), or skip this?
Is there a still a torrent for this?
I don't think character should increase on daily basis. Maybe on refusals./events.
- You don't want to use flags in this?
- We could use some general formula determining the total resistance and check against that.
- Process should scale to automation, maybe in simplified form.
- Assistant we should simply call trainers. Should always be a free girl I think.
- Some relevant updates to the training guild?
*There should be escape/suicide mechanic as well.
- There should be some combination of stats/traits that will prevent girls from accepting slavery all together (unless items + magic?)if she refuse a obedience training because her obedience isnt high enough or tait goes against it or her arch type goes against it she should be punished else her char could increase by x.. punishing her could increase her obed by x
wasnt thinking about magic but sure we already have that trainer option in game right ?
where should i post in the future ?
Start a new thread, I'll archive that one. I believe it all ended with CW saying that he doesn't like salves in the game and we just refocused on other stuff.lol, now I'm the bad one there :D But it is true I suppose... But I changed my mind a bit, I tried some less buggy version of Otherworld and I must say that I like that game (much more than SM3 as general concept goes).
lol, now I'm the bad one there :D But it is true I suppose...
...
- I do not like the bit where stats can be permanently and especially temporarily lost/gained (keeping track of new dicts). Seems like that's going to be a bit messy to work with.
- Refinement should be a prerequisite for some clients (noblemen and etc.)
- Items should work just like they do in the rest of the game and shouldn't add new restrictions unless absolutely necessary.
*You've mentioned fear stat. I believe we should start using alignment stat for the MC at some point and use dark alignments as fear inducing factor. No need for that extra stat.
*You've mentioned mood stat. I've commented on that before, we have joy, mood might be an overkill.
Quickly returning to girlsmeets:
- shopping topic is not used currently, and I kinda dislike the idea of girls describing AE system to MC. What could we write here, something like "I like weapons and armor" for warriors for example? It seems way too straightforward.
I propose either remove it or add an option to invite her to go shopping, where you for example select a shop, and then she selects an item that she wants depending on our already existing AB and/or AE system, and MC could either pay for it, try to convince her to choose another item or refuse, with with obvious consequences.
- another thing that is not used right now is romance topic. It should not be here anyway. I believe it should be only available for girls with friend status. Note that I don't propose to remove sex or kissing options, because, using AA terminology, lovers and sex friends are not the same thing.
- gifts should be a part of dating system, not meeting. Especially if we'll add shopping.
ok but how will you affect the vit/hp/char resist ( making it weaker because you over trained/drugged slave if not using temp traits )
as for perm ones you can just discard the idea if it its not gonna work ( could be useful on hard/extreme game mode but not gona be used now if ever i guess )
ok gona need to think on how to gain that lol unless you expect the slave not loosing refinement enduring all those dirty training sessions ( thats why i thought free girls could be more inclined to do the refinement part for nobleman's )
did not add new items just referred to use the ones from main ST concept i previously posted changing -char STAT/MAX ( you said was buggy anyway ) into vit/hp resist increase and char resist decrease
kk it was related to.. why use joy and not fear instead but i dont mind if its not used..
yes i explained why in my last stat edit:
main problem is its stuck at 100 while hp could go up so need to scale down the effect on mental punishment compared to physical punishment
if ill follow the con=>vit/hp system i used.. char could have a impact on joy stat drop resist.. but being low as it is at start im not gona use that unless revised.. possble reason why use moods as temp traits
edit: maybe use hidden flag instead of traits but it would remove the information to the player.. and might be bad in some cases
So I started with a blowjob fix pushed at least for now, will do the rest after some fg stuff. How is it possible that noone except me ever complained about blowjob pictures not being used by the game in whore job?
- *Remove/Expand shopping (system is currently designed with a premise that a girl buys the items herself, there is no option just choosing an item she likes) So my vote is for a removal until better times :) .- Hm, ok. How about this then: AB system buys an item, bill presented to MC, he can either agree or disagree to pay. If he didn't, either girl pays for it or we destroy that item, pretending that nothing happens.
- *Remove Romance (Can't we do something like "talk about love" from AA2 with generic replies?)
- *Gifts... Screw the dating system for now, it's too complex as you've said yourself to get it done properly and we don't need the items if we go with AA2 variant. I'd prefer gifts to stay as they are.
PS: To make matters worse... ST responses need to scale to the interaction responses, it would be weird if a girl wouldn't want to feck your brains out in the guild but taken to a brothel, would not mind doing so under the normal interaction process. Maybe it would be worth looking into to create some form of generic response labels to be used for untrained slaves everywhere. These shitty concepts are hard, triple difficulty effect applies for a broad concept game such as PyTFall, this is one of the reasons I am constantly trying to dumb down your proposals... the harder you make them, the more difficult it will be to scale them with the rest of the game.
Possible option might be simply forbidding untrained slaves to interact with the gameworld until they're trained and get some form of registration from the authorities... would be a bit of a stretch, but this may help isolating system a bit and narrowing down interactions prerequisites.
Start a new thread, I'll archive that one.I believe it all ended with CW saying that he doesn't like salves in the game and we just refocused on other stuff.
- Hm, ok. How about this then: AB system buys an item, bill presented to MC, he can either agree or disagree to pay. If he didn't, either girl pays for it or we destroy that item, pretending that nothing happens.
- What's the point without love stat, lover status, dating system, etc? I can even copy lines from AA directly, but again, meeting system is not about romance, it's about hiring a girl in one way or another, and friend status is enough for that. I'd say after we deal with ST, tags and meeting system, the next step might as well be dating.
- AA variant is too simple even for us. I mentioned that we at least could choose some initial conditions before the black screen, like place and gift.
----------------------------------------
Actually, that's a great idea. I'm gonna rip lines from AA2 for a start, then from AA if it won't be enough. For romance too, yeah. But I still don't think that all possible options should be available during meetings, and romance is one of them. It's like, I don't know, having all existing skills available from the beginning in some jrpg.
I still not that fond of breaking slaves and explicit stuff, so don't expect much help from me there, but I at least like the part of training maids. And governing the girls lives in general, as I'm a fan of princess maker and raising project games.Well, both SM and Otherworld imply soft ways to train slaves too. Something like gradual change of personality, so they get used to do what is expected from them without breaking or any punishing involved. Of course it takes more time.
INFO PyTFall 0.47 Alpha Loading: Characters + Building Crazy Tags Database From Filenames! took 1.12599992752 secs to run!
INFO PyTFall 0.47 Alpha Loaded 24329 images from filenames!
Well, both SM and Otherworld imply soft ways to train slaves too. Something like gradual change of personality, so they get used to do what is expected from them without breaking or any punishing involved. Of course it takes more time.
SF Updated! **Note, with this JSON files will no longer be useful for gameplay (They will still load to a separate database for conversion purposes)
Tags loaded from JSONs will no longer be used in the game!
To convert:
*Backup imagepacks
*Open tagger
*Click JSON --> Filenames button
*Follow instructions
**Note that the JSON files will be deleted after the process is finished.
- Removed pixilate transition from mainscreen
- Coded Tagger version 0.01
==============================================================
This is everything, data files and images.
elif ct("Tomboy") or ct("Energetic"):Is it correct?
What is the syntax for checking several traits at the same time in girlsmeets?
For example, if a girl has either Tomboy or Energetic (or both)?
Is it correct?
What is the syntax for checking several traits at the same time in girlsmeets?
For example, if a girl has either Tomboy or Energetic (or both)?
Is it correct?
Looks like there are too many if and elif operators.
For example, if we have shy energetic girl, and shy is always goes first in the girlsmeets rpy, doesn't it mean that we'll never see energetic lines?
Same goes for many other cases. Shouldn't lines be a bit more random? Like, sometimes shy, sometimes energetic?
...If I understand correctly, with this code we'll never see kuudere, well-mannered or energetic lines if a girl has shy trait. We'll never see well-mannered and energetic lines if she doesn't have shy but have kuudere. And so on.
if ct("Shy"):
$rc("Th-thanks...", "You think so? <blush>", "<She quickly looks away, her face red>", "You're ... nice...")
elif ct("Kuudere"):
$rc("Heh, good one.", "Of course.")
elif ct("Well-mannered"):
$rc("Well, that was certainly witty.")
elif ct("Energetic"):
$rc("Ehehe...you praised me♪", "Hm? Oh, thanks.")
...
I mean something like If I understand correctly, with this code we'll never see kuudere, well-mannered or energetic lines if a girl has shy trait. We'll never see well-mannered and energetic lines if she doesn't have shy but have kuudere. And so on.I've written it to work exactly like that on purpose.
Surely there is a simpler way to randomise lines a bit without using dice (n) for every single trait check. I hope ::)
Nah, I undersstand why you did it. Some traits are stronger than others.Dunno, the best I was able to come up with (with a help from Xela) is that "about her" option that works by adding all possible responses to a list (after choosing a one text randomly first), and then randomly select one from that list. (some actually have a dice too)
However, there are some lines that I'd like to use randomly. I wonder if there is a less cumbersome syntax than dice after every trait (we have about 80 btw, should I use dice (1.25) or something? :) ).
$rc("Hmph! Who would tell you! ","Listening to you is a waste of my time. ♪ ","I don't have time for pointless chatting.")
$rc("You're a perverted little bitch… But I don't hate that… ","You want to bury your cock in here? ","I appreciate that you noticed. ","Fufu♪ Did you get horny watching? ")
$rc("God, how pathetic... ","Who cares what you think.","You realize you aren't suitable, right? ","I don't give a shit what you think of me.")
$rc("Well, of course. What else could you have said? ","As I thought. Man, I look good in anything. ","Huhuh, look all you like, Now you know what it feels like to be drowning in lust… ","Of course I am! So look carefully, you won't see a beauty like this every day!","You don't need to state the obvious.","You didn't need to tell me, I already knew.")
$rc("Hmph... Do I hear an underdog barking here? ","How pitiable.","How boring.","Fu~ I was so... pathetic...","I've never met someone who knew so little about how pathetic they are. ","Are you finished? <gives you a dismissive glance>","Oh? Is your mouth all you know how to use? ","Hmph, how boring. ","Hmph, pathetic. ","Don't fool yourself into thinking that you can impress me with silly lines like that.","Is this blabbering all you can do?")
$rc("You want a hug? You're such a child... Come to me.")
$rc("...if you want someone to be nice to you, find someone else. ")
$rc("Hold me properly! ","Why not. ")
$rc("Don't act so familiar with me!","That's silly. ")
$rc("Hmm, don't tell me... you're horny? ","Hn… How is it? Have I got a tasty ass? ","Ahn... It looks like I've found someone with perverted hands. ")
$rc("Touching is forbidden~ That hand, don't blame me if it falls off.","You have some nerve putting your hands on me! ","Could you refrain from touching me with your dirty hands? ","It looks like you are in dire need of punishment... ")
$rc("Uwah, that is a really perverted face, you know? Ahaha, that's so cute~♪ ","Hnnn, I know, aauh, that my breasts are incredible, but... haaa… ","Huhu, I like that perverted side of you ♪ ","Kya~... I - am - being - molested -… Oh come on, at least play along a little bit… ","My tits feel great, don't they? ","Ah... Right there, keep your hands there... ")
$rc("What an idiot. What do you mean by \"Oops\"? ","How dare you?! Know your place your filthy piece of trash!","Piss off you fucktard!","<jumps away> Ha! Like I'll ever let a loser like you touch me.","Huhuhuh… I wonder how warm it would be to bathe in your blood...? ")
$rc("This is how you wanted to seduce me, isn't it? ","Oh...You surprised me a bit with that...")
$rc("*kiss*… I'll leave you with that much. ","Hn, *smoooch*… ...Uhuh♪ Now you've got a hickey ","*kiss kiss*, Huhuh, it's fine, because you belong to me... ♪ ","*Kiss*… Haha, why's your face getting so red. ♪ ","I, too, can be sweet sometimes… *kiss*, ahm... *smooch*… ","*kiss*, Hmmm, *lick*… Hmpf. No~ I won't let you go that easily. ♪ ")
$g(random.choice(["*giggle* I'll give you a feeling you'll never get from anyone else… ","Oh? You seem quite confident. I'm looking forward to this. ♪ ","You're raring to go, aren't you? Very well, let's see what you've got. ","Now then, show me sex appropriate to someone qualified to be my lover... ","Hhmn... My, my... you love my body so much? Of course you do, it can't be helped. ","Oh, you seem to understand what I want from you,.. Good doggy, good doggy ♪ ","Be sure to make me feel good, got it? ","Then you're bored, too. ","Feel grateful for even having the opportunity to touch my body. ","You won't be able to think about anybody else besides me after I'm done with you. ","Huhuhu, having sex with me… pretty cheeky for a pet dog~ ♪ ","Just shut up and surrender yourself to me. Good boy. ","All right, time for a fuck. Whip out your cock already. ","Hmph, Entertain me the best you can… ","Hmph, I'll prove that I'm the greatest you'll ever have... ","...For now, I'm open to the idea. ","Huhuh, I'll be using you until I'm satisfied... ","Huhu, you can't cum until I give you permission, okay? So, get ready to endure it~ ♪ ","Hmph. You took your sweet time. "]))
$g(random.choice(["What? Dying wish? You want to die? ","The meaning of 'not knowing your place' must be referring to this, eh...? ","I don't know how anyone so despicable as you could exist outside of hell. "]))
$g(random.choice(["Could you try to not talk to me, please? Also, could you not breathe when near me? You're wasting good oxygen. ","Ahaha ♪ You look entirely unsightly! It fits you well ","That pathetic face of yours isn't fit to show to other people. ","Kukuku… It's unusual running into simpletons like you. ","Hmph! What an ugly sight. ","Hmph, a vulgar person like you doesn't deserve to talk to me! ","Hi monkey! Did someone leave your cage open?"]))
$g(random.choice(["You think it's about time I turned you into my playtoy~? ","Huhu, You seem like you'd be good for some entertainment. ♪ ","Huu… You certainly like to be with me, don't you… ","Hu Hu~ ♪ Do you want to chat with me that badly? ","Being around me won't do you any good, you know? ","You've missed me, right? I know you did. Good boy ♪","You came to visit me again? I know you couldn't help it, I'm just irresistible ♪ ","You came just to see me? That's a point for you, but you have to try a lot harder to impress me, fufu ♪","Ok. I have chosen to give you some of my valuable time today. Don't make me regret that. ","Good timing. Come on, entertain me."]))
$g(random.choice(["Yes? If you have no business here, then do please vacate from my sight. ","If you've got something to say, look me in the eyes and say it.","...I don't recall asking to talk to you, so what is it? ","You're in my way. Get lost. ","I don't have any business with you. ","...Spit it out already. "]))
I never get tired of watching you.
I hope you know... the consequences of touching me.
Th-That's right... That's right. So you do understand! With my figure and good looks, there's no outfit out there that doesn't fit me!
What's wrong? Did you fall for me?
"[hero.name], I’ll show you how a ‘perfect job’ is done."
And "unsociable"$rc("Conversation... What a pain... ","<She is not listening>","Shut up...","You talk too much.")
$rc("Hmmm…. Interested?","You like my body? ...good.")
$rc("...Pervert. ","Weirdo... ","...annoying.","...Shut up. ","Not for you.")
$rc("I'm not used to compliments… ","Is that so...? ","…ok. " ,"<smiles dreamilly> Mhm...","...I'm happy. ","<gives you a faint smile> Nn...")
$rc("Bigmouth. ","...What'd you want? ","…? ","What a bother... ","...You talk too much. ","Pathetic... ","<She completely ignores you>","...and?" )
$rc("Nn… hold me… ","Ah… Hold me tighter… ","…come to me…","Hmhmm… I expected perverted things... Pity… ")
$rc("Hn... Let me go... ","Don't want to. ","I refuse. ","…stay…away. " )
$rc("...Okay. ","<slowly puts her hand into yours> Nn...")
$rc("No... ","...Stay away. ")
$rc("Ha... That touching... so lewd... ","How lewd... ","Blossoming youth? ","Such a perverted hand...")
$rc("Why are you touching me? So annoying.","No... don't touch my butt... ","Hate it... ","...I'll hit you. ","...Pervert. ")
$rc("Hnn, is my chest... soft...? ","M...more... my body... feels so hot... ","This is good... ","Becoming... more perverted... by the minute... ","Hn… You shouldn't grope people. ","Ah. Feels much better than rubbing myself... ","My nipples are tingling... Feels... Weird... ","Can't control yourself?")
$rc("How filthy. ","How... dare you... ","No, don't touch...","You can't... yet.","...not good.","...not allowed.")
$rc("Hn… A kiss on the cheek...? ","Hn... Cheek... good. ")
$rc("No...Stop it.","Keep your distance.","No good...")
$rc("Hmmm. ...M-my lips… ","*smooch*… Done… ","*kiss* ...More... ","*kiss*… Your lips are dry… ","*kiss*... *smooch*… *huff*... your breath... so hot… ","Do you desire my lips? *kiss*","...My spell… *kiss*… ","*kiss*... Hn... you like kissing...? ")
$rc("No.","...don't want to.","...Naive.")
$g(random.choice(["...If you do it, be gentle. ","I will handle... all of your urges... ","Then… I will do it with you… ","Do... me, I want it... ","...Do it... I want it… I want to receive your love… ","I'll do a lot… For you… ","...Fuck me. ","...If you want, do it now. ","...Sex-addicted? ","Hnn, I want it here… Hurry... hurry. ","...I want to do it, too. ","...How do you want it? ...Okay, I can do it… ","If I do it well, praise me... ","Now is your chance... ","Hn, come to me… I want it bad, can't wait… ","This cock now belongs to me. ","My body… I wish for you... to soil it… ","I'll tell you about something that feels good... ","Understood. I will... service you… "]))
$g(random.choice(["No. ","You... have a shadow of death hanging over you... ","...pathetic.","...you're no good."]))
$g(random.choice(["Ugh, stay away~ ","...I resent you. ","...Why... aren't you dead? ","...! "]))
$g(random.choice(["...Talk, I'll listen. ","Ah, it's you... ","Being with you... calms me... ","...I will escort you. ","...[hero.name]? …good.","…"]))
$g(random.choice(["...? ","...Want something? ","...Suspicious person. ","Hmm? ","…","...What is it? "]))
Please... stop...
Any ideas?
# elif ct("Optimist") and ct("Lolita"):=====================================================================
# $rc("Huhu ♪ Lookie, these are my awesome boobs ~ ♪ ")
Ok.. nothing works for me after sync/update.. where is the tagger ?
What is the syntax for checking several traits at the same time in girlsmeets?
For example, if a girl has either Tomboy or Energetic (or both)?
Is it correct?
elif ct("Tomboy", "Energetic"):
nm lol it use plain or
if girlfolder.endswith(".json") or girlfolder.endswith(".xml") or girlfolder.startswith("data"):
if girlfolder.endswith((".json", ".xml")) or girlfolder.startswith("data"):
if "Tomboy" in chr.traits:
$g(choice(["...","<Is she drooling?...>","<The dead look in her eyes isn't reassuring...>"]))
elif ct("Energetic"):
$rc("...no...", "...later...maybe...")
elif ct("Tomboy") or ct("Energetic"): not needed as the 2 line above are doing the same unless you want combined response unlike the coder chosed to in this case
$rc("Uhuhu⪠I won't tell you~ ⪠","I'm not going to tell you~ ","It's a secret! ")
elif ct("Tomboy") and ct("Energetic"): AND example to check need for both
if ct("Tomboy") and ct("Energetic"):
elif ct("Tomboy"):
elif ct("Energetic")
Looks like there are too many if and elif operators.
For example, if we have shy energetic girl, and shy is always goes first in the girlsmeets rpy, doesn't it mean that we'll never see energetic lines?
Same goes for many other cases. Shouldn't lines be a bit more random? Like, sometimes shy, sometimes energetic?
I've written it to work exactly like that on purpose.
Nah, I undersstand why you did it. Some traits are stronger than others.
However, there are some lines that I'd like to use randomly. I wonder if there is a less cumbersome syntax than dice after every trait (we have about 80 btw, should I use dice (1.25) or something? :) ).
options = {
"ct('Shy')" = ["Text 1", "Text 2", "Text 3"],
"(ct('Kuudere') and chr.occupation == 'Warrior') or (chr.status != 'slave' and chr.charisma > 1000000000)" = ["Text 1", "Text 2"]
}
replies = list()
for i in options:
if bool(eval(i)):
replies.extend(options[i])
if replies:
$ rc(*replies)
else:
$ rc("Generic reply if all else fails 1", "Generic reply if all else fails 2", "etc...")
Dunno, the best I was able to come up with (with a help from Xela) is that "about her" option that works by adding all possible responses to a list (after choosing a one text randomly first), and then randomly select one from that list. (some actually have a dice too)
I didn't cared about it much since, I was just adding texts from time to time.
There is something what I would like to ask about.
I have 2 personalities temporally removed because the traits I build them upon first changed, and I'm not sure on what condition I should display them (combination of traits most likely).
Any ideas?
Btw, Cherry, in many cases "ct("Optimist") and ct("Lolita")" check is tucked away by # letter aka comments. I wonder why, lines look pretty good to me :)I commented out all options that have less than 3 variations, because they would be too repetitive. I left them there to be updated latter. Or simply forget about them :)
=====================================================================
Thanks to AA2 lines we'll have romance talk, reaction to insults, propositions to be friends or lovers and many cool lines for AA2-type dating system.
if ct("Energetic"):
$rc("I'm gonna be the bestest wife!", "Is this that fate thing they're talking about?")
elif ct("Dawdler"):
$rc("There's gotta be someone willing to support me out there somewhere...")
elif ct("Protective"):
$rc("You're deciding who will be your partner for life. It would be strange not to be worried about it.")
elif ct("Dependant"):
$rc("E-even I want to be a good bride someday, you know...?")
elif ct ("Shy"):
$rc("Lovers... Th-they're supposed to...hold hands, after all... Right?", "Wh-what comes after a k-kiss is... It's... Awawa...")
elif ct("Collected"):
$rc("Chance encounters only happen with both time and luck...Well, I suppose you could call it fate.")
elif ct("Pervert"):
$rc("People are no more than animals, so it's only natural to copulate... right?")
elif ct("Dandere"):
$rc("If you like them you like them. If you hate them you hate them. That's all there is to it. Right?")
We have Loner (again), so unsociable goes there. Some of those lines could be used for Dandere too.I just don't know. I was imagining "egocetric" to be more like a proud aristocratic-like girl making fun of you, that doesn't really use vulgar language like I would expect from the name of ill-mannered trait.
As for egocentric, it's either Ill-mannered (more offensive ones) or Tsundere (less offensive ones).
========================
I pushed a fg area json. it doesn't seems to cause bugs but it's not really playable (no balance whatsoever)
so far for fg:
- descriptions to locations are not anywhere (but I think I've seen them before, did they dissapear?)
- sort order of new unlocked locations in the menu is really strange
- cash limit doesn't work, or it's totally overwritten by some risk reward calculation
- I added those Hazard, Travel time and max monster per group fields.
No idea about he numbers for hazard. Are those additional looses for each day of exploring? Does girls stats regenerate each day?
I would really like to create a custom item rewards list. Arena_rewards.json looks nice when it comes to actual groups of items, so I think it can be the same for fg, but I think there should be also a chance to find something from each used lists (basic percent chance?), because some locations could be filled with stuff while others almost empty with finding some to be almost a miracle.
It would also make sense to tie some rewards to the mobs you encounter, but that may be too much...
Xela: there is a lot of has_image checks in jobs, shouldn't those be somewhere when the database is created and only use flags then? Because those checks always give the same result, didn't they?
def get_availible_pics(self):
"""
Determines (per category) what pictures are availible for the fixed events (like during the jobs).
This is ran once during the game startup, should also run in the after_load label...
Meant to decrease the amount of checks during the Next Day jobs. Should be activated in post Alpha code review.
PS: It's better to simply add tags to a set instead of booleans as dict values.
"""
# Lets start with the normal sex category:
if self.has_image("sex"):
self.picture_base["sex"] = dict(sex=True)
else: self.picture_base["sex"] = dict(sex=False) # This is not really required as this should be taken care of by the show method, maybe for the fututre.
# Lets check for the more specific tags:
if self.build_image_base["sex"]["sex"]:
if self.has_image("sex", "doggy"):
self.picture_base["sex"]["doggy"] = True
else:
self.picture_base["sex"]["doggy"] = False
if self.has_image("sex", "missionary"):
self.pictute_base["sex"]["missionary"] = True
else:
self.pictute_base["sex"]["missionary"] = False
pics = set()
if self.has_image("sex", "doggy"):
set.add("doggy_sex")
...
Why would we need insults during girlsmeets or interactions? Like at all?
I understand AA, it's a social simulation where all the characters are equal, so you at least can manipulate AI this way. But in our case why would you want to lower disposition?
I guess the only possible way to use it profitably is during ST to lower character and rise obedience a bit without physical means. But not during girlsmeets.
It's where we test all the unfinished stuff. You should be able to get as far as the mainscreen, it will be there next to the guild and forest walkabout.
==============================================================
My girlsmeets don't have the insult option, maybe I need to pull or something. And gifts are broken because I rewrote the inventory class. I'll fix it after you guys are finished with girlsmeets, it's just one or two lines of code.Options (multiple!) to insult exist in girlsmeets file. I guess you disabled them because they didn't have lines, but they will now with the help of AA.
Works for me, who would have thought :D
I thought I'm a goner after it crashed when I tried to view girls right after converting, but no, works after restarting.
*It's too the right of the FightersGuild and Forest tests.
**There could be 1001 things that could go wrong with new code, that it worked for me isn't much of a test :(
Did everyone manage to convert their packs alright btw? And did the loading speed noticeably improve?Conversion is working fine. SOMETIMES when I start the game - everything works. Other times, I get this girllist screen.
While running game code:
File "game/library/screens/pyt - screens - girlslist.rpy", line 5, in script
with dissolve
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
IOError: Couldn't find file ''.
starting to get errors when i press start button and would loop lock after mc choice
Conversion is working fine. SOMETIMES when I start the game - everything works. Other times, I get this girllist screen.Code: [Select]While running game code:
File "game/library/screens/pyt - screens - girlslist.rpy", line 5, in script
with dissolve
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
IOError: Couldn't find file ''.
Improvement... maybe, I can't really tell, on my suckish hardware the start is too slow to notice if it's faster by few seconds.
===========
XMP (or how that's called) created by rudis tagger allowed to sort images by tags and that's was super useful for updating.
(you just browsed through images tagged "sex" and updated those).
I suppose we now can do the same by searching the images by filenames in browser, but if would be really nice to have it implemented in the tagger.
Filter exactly like that is working great in the gallery so far.
Omg not even working with fresh repo clone >.<
Code: [Select]While running game code:
File "game/library/screens/pyt - screens - girlslist.rpy", line 5, in script
with dissolve
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
File "game/library/initialization.rpy", line 134, in load
child = im.cache.get(self.image)
IOError: Couldn't find file ''.
fixed my problem.. it was related to pics name.. somehow the check between start game and MC select checks your pack and if it finds names too long or non consistent between file name and name used in json.. it make an error you could ignore to get to MC select screen but if you press start game in that screen you could get cascading errors
so dont ignore pic error, fix it and you wont have errors after MC select=> start game
( didnt make errors or crash in previous versions.. looks like tagging update make it more sensitive :p )
Please check your devlog, there should be a girl id there, maybe you can figure out what caused it.ok I found it. every error is in my NGE pack - there is a lot of errors and all look like this:
Also if you can, drop a copy of that log in mine DB folder, I'd like to know what times need to be improved the most on older hardware.
PS: How the hell can you run Illusion games on PC that had issues with PyTFall?
WARNING PyTFall 0.47 Alpha Total failure while looking for image with ['ibuki_maya', 'portrait'] tags!!!
Dunno why, all files are converted, for example Maya's portrait is a po-mqxl.png. But I can't even load them in your tagger now, it's just show empty field where filenames normally are. The game just can't find them for some reason...INFO PyTFall 0.47 Alpha Starting timer: Loading: JSON Tags (OldStyle)
INFO PyTFall 0.47 Alpha.tags loaded 0 images from tags.json files
INFO PyTFall 0.47 Alpha Loading: JSON Tags (OldStyle) took 24.3299999237 secs to run!
placed it in your DB to bugs, 1 run with that pack, 2 withoutok I found it. every error is in my NGE pack - there is a lot of errors and all look like this:Code: [Select]WARNING PyTFall 0.47 Alpha Total failure while looking for image with ['ibuki_maya', 'portrait'] tags!!!
Dunno why, all files are converted, for example Maya's portrait is a po-mqxl.png. But I can't even load them in your tagger now, it's just show empty field where filenames normally are. The game just can't find them for some reason...
Only thing that's long in loading is this:Code: [Select]INFO PyTFall 0.47 Alpha Starting timer: Loading: JSON Tags (OldStyle)
placed it in your DB to bugs, 1 run with that pack, 2 without
INFO PyTFall 0.47 Alpha.tags loaded 0 images from tags.json files
INFO PyTFall 0.47 Alpha Loading: JSON Tags (OldStyle) took 24.3299999237 secs to run!
There's no need to run illusion games to rip lines out of them :)
call load_json_tags
Edit: Still no devlog file*i reuploaded it again, but it should have been in Pytfall/Xela it's not there?
i reuploaded it again, but it should have been in Pytfall/Xela it's not there?
And I figured out the bug - it was totally unrelated to the tagger or images, it was a DarkTl data file that I grabbed a few days ago without checking and it's not compatible with that girlpack (bad ID's). It's strange that I didn't get that error much sooner, probably I was just unlucky with the random girl assigned at new game and didn't get any of NGE girls in dev mode before.
Sorry! :-[
Btw, if we'll add moral stat after all (because it would be very fun to corrupt characters during ST), it doesn't mean that we have to remove moral traits. They just will limit moral stat in one way or another.
Yeah, I know what do you mean. Yet without any moral at all what's the difference between whore and warrior, or lover and non lover? Shouldn't they have major difference in terms of sex acceptableness?
Pushed some lines, checks are not in the correct order yet and new types of lines are quite messy, it's like an alpha stage.Ok, I have some lines stored that I wasn't sure about before, but some of them could fit into those new field + those personalities I removed for a while. So I add them someday.
New things that I'm going to use for sure:
- Reply to insult, one label for all of them;
- Date good and bad endings and refusing;
- Many lines for friend and lover propositions.
There are some other new labels, but looks like there won't be enough lines.
Btw, do you think it's ok to break the fourth wall by using that letter about Air Force Major Abacha Tunde and $ 3,000,000 American Dollars? Shouldn't it be a bit more authentic, like gold instead of $ and so on?
Btw, do you think it's ok to break the fourth wall by using that letter about Air Force Major Abacha Tunde and $ 3,000,000 American Dollars? Shouldn't it be a bit more authentic, like gold instead of $ and so on?
I think that some lines from "normal" should be copypasted into traits. I don't think there a need to have unique lines for every options, only to avoid those that would look out of place for them (=almost every girl could say simple "thanks" sometimes and other vague answers)Yup, that's the plan.
It should be deleted completely (or edited) and someone should create default labels for Retarded/MindBroken traits.Ok, will do.
@MrKlaus, any news about descriptions? I'm not rushing you or something, just wanna to see what do have there.
Btw. The game have something like a puzzle maker from girls pics. Can that puzzle maker could be used inside a quest or an event; or would be to much pain in the ass to code? I'm thinking something like: "here is a broken stone key to the temple, after getting the puzzle right it would open a new area for exploration" or something like "Your cat destroyed my art! - Fix the painting event".
With ease. Don't worry about using it in event.
Edit: Ali events needs to be rewitten with less lines from the MC and to happen near the mages tower. I can prolly do that myself. Note that you wanted to also expand box event unless I misunderstood something.
I'll brb in 3 - 4 hours and hopefully get working on SE.
btw. what is SE?
Well, if there will be a polymorph cat, it would be a great opportunity to add random catgirl pack, since she can change her appearance freely.
I guess we could add something like that as a part of the main story, it will enliven and embellish the game, like those unique assistants in Otherworld. Maybe either in childhood or just before arrival to the city MC found a small box, and so on. It will always be with MC at his profile screen, it can help in fight if needed, you can talk to her, she helps you to recruit girls in cat form, etc. Even though I'm not really into furry stuff, I like the idea a lot.
I guess any generic guards, somehow I always imagine them with helms covering faces.there are no texts for strong/clever created by me anyway, so I'm not against that :) but because intelligence and strong stats and traits exists, I think there should be some checks for that. Like, calling a weak girl strong should fail, because she will think you are just making fun of her.
Not necessary fully medieval, there are a lot of tips about more advanced technologies in art that we use, but without blasters either.
I think we should combine reactions to clever, strong and cute compliments in girlsmeets. Breasts compliment is another matter, it has a bit different lines.
label start_box1_event:
"When you got home, a mysterious package was lying on your doorstep."
menu: #the 4 and 5 option could be optional for now.
"Kick it away.":
jump box1_event_kick
"Open it and look inside.":
jump box1_event_look
"Walk past it.":
jump box1_event_pass
"Have one of your slaves open it.":
jump box1_event_slave
"Call the bomb squad!" :
jump box1_event_squad
# from here i'm lost. I want for this option to be random at every pick by the Player. For example "kick" have 4 random ways and after displaying the result, they should end the event.
label box1_event_kick:
"It was a bad idea. Inside was a portable anvil. You broke your foot." #maybe add a temporary lose to agility or a permanent one
"It flew far away when you were pump fisting in celebration of setting your new personal best in box kicking."
"It flew high in the air and had hit a city guard on its way down. You quickly went inside your house."
"Unfortunately the box broke and you were standing, in ankle high pile of shit."
label box1_event_look:
"After carefully opening the boxes lid, you had found SHIT! Literally."
"After carefully opening the box lid, you had found a six-pack of small hp potions" # also could give other random items of low value, something like a promotion box from the shop filled with samples
"After carefully opening the boxes lid, you had found a cat" # this is a idea that could grew. Player could be given the option to keep the cat. The cat itself could be showed at the MC feet on the status screen. After lets say 100 days could be bigger and be used as a battle pet in fights.
"After carefully opening the box lid, you had found trash inside."
"After carefully opening the box lid, you had found nothing."
label box1_event_pass:
"You went inside ignoring the box"
#don't know if this is possible right now, but after taking this option from the menu it should warp to all girls screen, letting the player to pick a girl to open the package.
label box1_event_slave:
"You appointed [slavename] to open the box for you. Inside it were pills for your manhood problems that you ordered in secret. Unfortunately [SlaveName] likes to gossip."#maybe lose some reputation or seflestime (-charisma event)
"You appointed [slavename] to open the box for you. Inside it were thee jars filled with jam, that granny sent you."
"You appointed [slavename] to open the box for you. The box was empty."
"You appointed [slavename] to open the box for you. When she picked it up, it exploded!" #the assigned girl got killed
#in future could be used as an attemp of a Crime Lord to killed the MC if they are on bad terms.
label box1_event_squad:
"You carefully stepped back. Being in distance of ten steps from the box you ran to the nearest guard post. After twenty minutes the vicinity of you house was evacuated and the area was closed for civilians in five block range. A specialist appeared on the scene and began to examine the box. Briefly after five minutes he came to you and showed the containment of the box. Inside it was a bomb! This time you got lucky!"
"You carefully stepped back. Being in distance of ten steps from the box you ran to the nearest guard post. After twenty minutes the vicinity of you house was evacuated and the area was closed for civilians in five block range. A specialist appeared on the scene and began to examine the box. Briefly after five minutes he came to you and showed the containment of the box. Inside it were panties that you order for the girls. You were charged with cost of the operation having to pay 1000 gold"
"You carefully stepped back. Being in distance of ten steps from the box you ran to the nearest guard post. After twenty minutes the vicinity of you house was evacuated and the area was closed for civilians in five block range. A specialist appeared on the scene and began to examine the box. Briefly after five minutes he came to you and showed the containment of the box. Inside it were boxer short with teddy bear pattern, being sent to you from granny. Oh the humiliation! You were charged with cost of the operation having to pay 1000 gold"
I'm not sure how to handle crafting at all. Should there be strict recipes or a lot of values with rng?I just have no idea...
I'm not sure how to handle crafting at all. Should there be strict recipes or a lot of values with rng?
I'm still missing something about this game, but can't figure out what to do with it, so I'm getting strange ideas sometimes.
To me it's the story lines that uncover the city life, in depth instead of superficial events, decent backgrounds for girls creating a unique feel about them that is missing. I suppose different things would be missing for different people. Per original concept, we were first supposed to finish exploration and st and than focus on developing endings, goals, stories and events.
For me that would be probably "theming" your business. But it's hard to explain. Something like setting a "house rules" for both girls and customers and promoting that. So there could be a one building where all girls all proper and elegant, and any ungentlemanly behavior there is not tolerated, while on the other street you could run a dirty whorehouse where anyone can be rough to the poor girls as they please. And if what type of girls are together could matter somehow.
And choices, man I like choices that do matter. Over boring numbers anyday.
But that's so insanely hard to make... because for every choice I would had to create all other options. And it's also no fun at all to create outcomes I don't like, just because they are supposed to be there...
Not sure if I understand this well. So instead of focusing on your girls and interactions with them, with NPCs playing mostly the support role (shops and questgivers), you would rather have a in-depth NPCs that have their own goals and cause wholegame events in the city, where MC can participate? Like a actual storyline with preset endings? Or maybe sandbox-like when one organisation takes over the city, replace the NPCs with their own, but nothing drastically change?
Hm, I found some interesting lines in pyt - labels - girlinteractions - date. What is it for?That's our old date and how to start a fight example. I don't think it work anymore and because of that a button to start it was removed from interactions.
I mean, this is what I think dates was supposed to look like, before Xela decided that there's no value in doing it now, and postponed that idea until much much further in development (after beta == probably never).
For me that would be probably "theming" your business. But it's hard to explain. Something like setting a "house rules" for both girls and customers and promoting that. So there could be a one building where all girls all proper and elegant, and any ungentlemanly behavior there is not tolerated, while on the other street you could run a dirty whorehouse where anyone can be rough to the poor girls as they please. And if what type of girls are together could matter somehow.
Err? When did that asshole Xela decide that? We otta find him and kick his ass :DYou the moderator here. Just ban him already!
Few days ago when discussing the new theme for PyTFall (the bright map), Dark mentioned that you guys plan to add new cities, territories etc.I hope you understand that we are far from that. We need to finish one city for a start :)
You the moderator here. Just ban him already!
Question: Will there be alternative ways to earn(spend) money by buying shares in businesses, supporting merchant trades, patronizing artist(this could be a beginning for meeting a certain girl)?
Another (stupid) question: Is there somewhere a list of things that will be inside the game (except the topic called -TODO: list)? Number of cities/town/ villages, shop types, locations, NPC types, event types?
I’m asking, because I was thinking about making a quest chain given by one of the girls or something like a short story for obtaining a girl.
I’m asking, because I was thinking about making a quest chain given by one of the girls or something like a short story for obtaining a girl.Just make note that if you are making quest for unique girl (=downloadable girls) all files for that should be located inside the girlpack and not the game itself.
Just make note that if you are making quest for unique girl (=downloadable girls) all files for that should be located inside the girlpack and not the game itself.
If I remember, right now we have this:
"start id label" - that runs at the start of a new game, it's useful for registering custom items, skills and a general checking what girls are really there (as a player can use only parts of the packs).
"event manager" - this thing check for events at most locations/screens. It has a simple conditioning build-in, like percent chance, run-at-entry or run after "look around" button, repeat at X days... etc. There's some support for adding any conditions in.
"girlmeet quest/meetscript" - you can also run your label from a girl's picture at girlmeets, instead of default menu appearing.
"replaceable lines" - game checks for unique label before every answer to girlmeets/interaction so you can replace some or all of the default answers with your texts/events
But you can surely request more, like I did 8) :) [size=78%]. [/size]But I think it's working nicely now, it's sufficient for most event's I was thinking about doing.
Probably at some point will try to make the file myself(for a short side quest). But for now, I was thinking more like writing the "quest line tree" with all the branching, potential outcomes and handing it over to Xela to do the heavy lifting :PYou sure can do that, it's very welcomed too. (I hope :D )
Another (stupid) question: Is there somewhere a list of things that will be inside the game (except the topic called -TODO: list)?We discussed an elven city nearby, probably beyond the forest, just because we have a lot of elven packs already. I even have very cool map for it somewhere in my db. And elves are supposed to be ardent opponents of slavery, so elven slaves will be rare and expensive.
You sure can do that, it's very welcomed too. (I hope :D )
But not only Xela should be able to do that, unless you need some totally crazy conditioning there :) . Our goal is to make inserting events easy as possible, and the rest is usually just a pure renpy with some stat changes. (at least after we write a guide)
---------------------
For generic events we are still missing some stuff, like callable menu to select a girl filtered by conditions specified, that could be very useful thing I guess. But this is stuff only Xela can do, and there is no ready content requesting that so...
We discussed an elven city nearby, probably beyond the forest, just because we have a lot of elven packs already. I even have very cool map for it somewhere in my db. And elves are supposed to be ardent opponents of slavery, so elven slaves will be rare and expensive.
Any content for the city, like locations, npcs, quests, etc. is welcomed, of course.
Also with current locations the possible quests/story lines options are pretty limited. But when the “PyTFall Universe” will be expanded by new NPCs, cities, neighborhoods and areas then we will be able to show off and get some more complicated plots up and running.Yes, Like Xela said, we will focus on story and events after the current work on new modules is done. Game without a story is just not worth attention in my option :) .
Content, you mean done graphics and ready to use NPC sprites or generally ideas for the NPCs and locations?
Yes, Like Xela said, we will focus on story and events after the current work on new modules is done. Game without a story is just not worth attention in my option :) .
And we need actual text the most I believe. There are plenty of images and ideas...
Oh, I also have pics for several human packs based on hair color, they will wait until we finish with tags.Ok, NP. I'll go with recoloring a less known girl then. I need to practice photoshop skill anyway :)
And I used some special characters that don't have a personality at all as random ones. And there is slime pack, since they are able to change shape and color, thus variety doesn't matter. I don't have any more ideas, really.
After the guild is ready, I figure we should add a small intro, some quick guides and release second alpha?
What is the high branch club btw?
Pfff... what happened to Fighting Guild... I thought that was what we were working on.I'm still creating items for it and figuring item lists... (I do want to create unique item list for every my area, without using item price at all, hope that's ok)
========edit
LOL, I just created some head items and only after then I noticed that there's no headsloth in the game :-\ I think I need to actually try to play the game sometimes :D
After the guild is ready, I figure we should add a small intro, some quick guides and release second alpha?Girlsmeets will take some time (after AA2 lines I'm going to add some AA ones that Cherry didn't use), so yeah, go ahead.
We were talking about reinstating the head slot not so long ago btw...Yup, it's not hard at all to add a slot. The problem here is to create good items for it. If you can create at least 10 for a start, we can add it right now.
Yup, it's not hard at all to add a slot. The problem here is to create good items for it. If you can create at least 10 for a start, we can add it right now.No thanks, it's too hard and time consuming to came up with any sensible descriptions. I'm overburden with the few items I wanted to add already...
No thanks, it's too hard and time consuming to came up with any sensible descriptions. I'm overburden with the few items I wanted to add already...
You wanted to add Tavern, didn't you? See if you can code one in, might be a decent idea to set up something like tavern/fg combo as you proposed.Ok. I'll look into that - I'll take a peak at the resources I have and write soon about how I imagine it could look like.
Ok. I'll look into that - I'll take a peak at the resources I have and write soon about how I imagine it could look like.
============edit
It's not going well, I'm not really able to find good images for NPC pair I imagined to use there, and I'm still missing a good FG office picture.
We can do without... focus on tavern instead?And what you want to have in tavern? I imagined it only as another "look around" location for future exploration quests.
Could work... I thought more of a hang-around update in the guild for potential clients, guildmembers and other folk. Maybe it wasn't a very good idea.Hmm... ok, my mistake, it's probably true that traditional RPG look wouldn't do any good in H-game.
Hmm... ok, my mistake, it's probably true that traditional RPG look wouldn't do any good in H-game.
So... it should be tied much more to the slave market then? Can't really imagine any other type of stable clients as it's too simple to just keep the money and items found for team members themselves. Then the base could be just a prison for convenience (http://img24.eu/images/60981070798141959139_thumb.jpg) (http://img24.eu/viewer.php?file=60981070798141959139.jpg)
Just buyers of unique items/slaves and some folk who want to be around pretty warrior girls is what I had in mind. Also a place for your girls to relax between exploration runs. Maybe it's too early for this, I can't really tell atm. Still haven't added girl capture and I am about to start working on guild control screen (building itself, not exploration bit).I'm still confused with the basic concept of the purpose of FG then. It is a base? So the girls go FG->Exploration->sell stuff->FG? What is MC doing then, just some sponsoring? Or is MC trying to lure girls out from FG to his buildings to start a exlorations from there?
I'm kinda in favor of keeping just the main screen button right now :D
- Storyline should include something about a powerful, banned magical weapon being (Lets call it Etherra) used to bombard slave encampments around the city and in local mountains/caves during the last uprising. That created tears to other dimensions and unstable areas that were being constantly replenished with loot, people and items... and monsters. Driven by lust for fame and fortune, not mentioning the interest of exploring unknown, best warriors from PyTFall decided to try out their luck (still well armed and sure of themselves so soon after the conflict has ended). The effect however, was devastating and over 90% of explorers have perished or went MIA so the Masters ordered City Patrols to turn around anyone heading towards those lands. Soon, not willing to leave such a resource unexploited, Masters teamed up with Mages from the tower to utilize the same dampening system that was used to block fatal blows to valuable monsters and fighter in the arena to explorers. Evacuation through teleportation was also concepted. Soon a system of Fighting Guilds was created and sold into private hands in order to utilize those systems. Outside of controlled Arena environment, they were only about 20% effective, especially on large parties so a law was made to limit the units size to 3 (maximum allowed in the Arena). That, together with discipline, order and structure that Guilds provided the effect was astounding and death rate was lowered significantly. Teleportation over such great distances would be used only as a last resort in a case of lifes of entire team being in danger due to insanely high cost.
================================================
This is more or less what my idea was for the FG. The permit is what's important, the building itself is just a building. I wanted to create a small event where MC is given a chance to run a guild due to his father being a very capable manager (generally) by a former friend of his who's working for the authorities.From this it sounds to me like some magic place with a portal for this evacuation teleportation (it makes sense to have only one travel time with this instant return) with everything else being just bureaucracy. It could even be this mage tower we already have then :)
So it's a hangout place, a trade and a sanctioned exploration agency all in one.
From this it sounds to me like some magic place with a portal for this evacuation teleportation (it makes sense to have only one travel time with this instant return) with everything else being just bureaucracy. It could even be this mage tower we already have then :)
Ok, I must have missed this, so almost everything I did in last days don't fit at all...
How are we going to use evacuation portal with automatic exploration? Girls are supposed to do it on low health or something?
I am not sure yet, a small chance when a girl is about to die maybe. It's not failsafe system. Maybe a special upgrade to increase the chances significantly at a high cost.
Speak up if you have any ideas :)
I am not sure yet, a small chance when a girl is about to die maybe. It's not failsafe system. Maybe a special upgrade to increase the chances significantly at a high cost.Well, it probably should depend on team's leader, she should make the decision to teleport out. Meaning more chance with traits like edgy and less with traits like fearless.
Speak up if you have any ideas :)
About that dimensional rifts concept. Does it mean that the exploration party doesn't have to fight just what appear in the cursed forest, but also go through those rifts to different words?
What I want to ask is, does it mean we can create a totally unrelated locations to fight in? Let's say, portal to lava lake with fire monsters, or candy land full of evil lolis and stuffed bears...
(just asking, as it seems I missed this part before)
About that dimensional rifts concept. Does it mean that the exploration party doesn't have to fight just what appear in the cursed forest, but also go through those rifts to different words?In terms of plot, even if there are two-sided rifts that lead to other worlds, it's still too dangerous to go through, especially if we talking about candy land full of evil lolis. Because they can close themselves at any time (I wonder if anyone here watched Sliders tv show...)
You've missed the concept discussion, those are unstable magical areas where sh!t just keeps pouring in from different dimensions. Those areas change within themselves a bit but there are all near the city. In fact, I am meaning to add mechanics to obscure exploration progress as time passes by (loosing access to location you haven't visited in a while) and maybe twisting rewards (no ideas on how to do the latter yet).
Something unrelated: What about changing the general store BG to something less modern? I found these:
(http://img24.eu/images/00538118105865281389_thumb.jpg) (http://img24.eu/viewer.php?file=00538118105865281389.jpg)(http://img24.eu/images/55738270227911463385_thumb.jpg) (http://img24.eu/viewer.php?file=55738270227911463385.jpg)(http://img24.eu/images/93217147826185719594_thumb.jpg) (http://img24.eu/viewer.php?file=93217147826185719594.jpg)
And also the waitress in cafe have some image quality issues, would you mind if I change her for someone else? (or I can repair her if she's someone you like)
I don't know. Do we need half-sister trait for random girls, and even unique ones too if a pack maker/player wants it?
Because in terms of dialogues it will be super easy.
I don't understand the difference between $rc and $g in girlsmeets. Looks like they are interchangeable, is that so?
python:What is that?
"""
Traits first here I guess...
"""
labels-girlsmeets.rpy, label gm_interact_interest, after that goesWhat is that?
Also, does ct("trait1", "trait2") mean "trait1 or trait2"?
Hello, posting idea I am yet to see in Slave Training game.. And since your game does it already to extent, mb I have small chance here ;P
I am talking about dividing girls by type ( the game does it already to extent Free / Slave Girls)
What I lack is this :
Free Girls
Slave Girls
- High Class ( Noblesse mainly, mb clergy / wizards / knights type of elite)
- Middle Class ( Merchants mainly, mb some kind of squires / maids of noblesse etc)
- Low Class ( Prostitutes , slaves and other scum in game terms.)
- Foreigners ( Cat girls, monster girls, elf's, whatever is not citizens of you city)
Why do I propose this concept ?
Simply because it makes game more interesting :
1) Gives player more goals (yey me first middle class girl !)
2) More brothel customization ( High class brothel - this one !)
Allows for many interesting concepts
1) For example High Class should be only obtainable by some special circumstances ( Noble being bankrupt, Kidnapping )
2) Same for middle class to lower extent of course.
3) And low class > pretty much what u have in game, always available in slave market.
4) Missions ( get Brother with 4 Middle class girls in 3 days because noble wants them, father wants to buyback girl, noble sends hired assassin to take girl home etc)
Of course you have to get something to actually make the girls different and that could be :
1 ) Higher class could be pre-equipped.
2) Traits to be different ! Every girl can have big boobs but Elegant... Slave girl ? Really ?
3) Can work with different clients / can have different positions available. (for example High Class girl will not clean , while Low Class can't dance properly until taught)
we already have stats/traits/experience/income that does a very similar thing
2) I have no problem with an elegant slavegirl.Well then you mean all the girls have same options in traits ? Then where do they catch them ? "No-Name-Girls-Woods" ? In the city you emphasis has HIGH difference between nobles living in luxury and slave scum, there is no difference between girls ? I mean where do that low-class slaves learn to dance/use magic/being good at fighting ? If they did they wouldn't be some kind of slaves. Also those nobles would deemed different kinds of girls, not just "standard" one. One would want a slave, second a free girl, third foreigner or exotic girl other one would enjoy his competitor daughter and so on....
Aye, I know development team is small , and it's your game not mine , so I will be happy with even 1 of idea makes it.
Still I can't really agree with you on this 2 points :
It doesn't even come close. Stats / experience / income right now depend poorly on how long girl works and nothing more. Worst slave scum can top any free girl - no problem.
My point being : Every girl feels the same, writing extensive story for each of them is no-go, that's why I propose social standings.
Besides points I mentioned before it can also be used for other things :
- Different class girls could have penalties / don't want to work at all with other class.
- Different courses available ( ya stats ranges... And it makes girls different)
- Higher class dost mean exactly better - for example Noble girls hardly good at fighting, but maybe some exceptional magician among them with all that connections and money ?
Which goes to second point... Traits do help yeah but that :
Well then you mean all the girls have same options in traits ? Then where do they catch them ? "No-Name-Girls-Woods" ? In the city you emphasis has HIGH difference between nobles living in luxury and slave scum, there is no difference between girls ? I mean where do that low-class slaves learn to dance/use magic/being good at fighting ? If they did they wouldn't be some kind of slaves. Also those nobles would deemed different kinds of girls, not just "standard" one. One would want a slave, second a free girl, third foreigner or exotic girl other one would enjoy his competitor daughter and so on....
Tl;tr : It's totally unrealistic to have all the girls posses same starting options, yes even scum girl can be taught to be Elegant and to Wield Magic > but certainly not start as equal in capabilities with more wealthy citizens.
Classes system will add more depth to the game without a doubt.
Not all girls have the same traits options!you are still having trouble catching the difference between charactersI sure am having trouble with this - becouse all these things u are talking about in that part are DEVELOPER SIDE ONLY. Player dosn't see that some Traits combinations dosnt happen and why should he care ? It's just limitation from above he do nothing about. And some lines durning dialog ? Please this is not even part of Brothel Menagment , untill it's in developer version, acutal text lines only metter in Rercuritment.(and barly if we are at that)
@Xela
Seems we don't speak on same wavelenght, your game - do whatever you want with it.
Some things you talk about like different starting level and so on - these are nice steps.
But we don't agree on basic level here :I sure am having trouble with this - becouse all these things u are talking about in that part are DEVELOPER SIDE ONLY. Player dosn't see that some Traits combinations dosnt happen and why should he care ? It's just limitation from above he do nothing about. And some lines durning dialog ? Please this is not even part of Brothel Menagment , untill it's in developer version, acutal text lines only metter in Rercuritment.(and barly if we are at that)
I have trouble why don't you see that player can Control and Interact with girls being from different categories / groups / classes . He can choose what he lacks and what kind of girls he would like to have / are needed for mission. ( I don't have girls with <Insert Trait Name Here> ... ok then I need some middle-class girls becouse they do learn it / start with it / have it easier.) instead of (ok Slave Market...)
That being said, of course amount of team members limits a lot of things and it's up to you which idea goes to trashbin.
Take care.
Am I really that big of a skeptic?You missed my point. Planned systems:
I have huge images repository. So if ya want some kind of pics I can try to provide them. Other then that I wont be able to help.Yeap, that would be a great help too.
Now after we will have them all, we might as well add classes too, because why not? :D
I'm waiting for SE update, as I can't continue on that yet without some support/more info. (how FG will look like, how to write item drops in json, what options for quests are in that module).
And of course what kind of things you are looking for.Backgrounds for various locations, maps, animations for spells, npcs and items sprites, elements of interface.
Backgrounds for various locations, maps, animations for spells, npcs and items sprites, elements of interface.
For backgrounds resolution is no less than 1024x768 (more is better), for others it doesn't matter much.
...
Last quick question... I don't think it realy metters... but u are fine with copyrighted stuff right ?
Quick look on my normal images repository gave me this :
https://mega.co.nz/#!95REySoS!CANd5i9ssxC9CY6Dr4jjZkdktJyuJwfUpdsPQpllrCA
Also if ya want more, please be more specific :
Inn / Elven City etc... I don't know what you lack.
Tomorrow will search Cg/Anime images repository.
Pretty hard to search those dark-themed things.
nothing in our BG folders is any good? :( Together we have almost 1500 BG pics and I though that some of these streets pics we collected are really nice.
Native resolution is 1280x800.Yet we have many bg pics with 1024x768. But more is better, as I said.
Together we have almost 1500 BG pics and I though that some of these streets pics we collected are really nice.I want background for a temple of time for ressurection system. There probably should be massive watches or something, and it should look like a temple more or less. I don't think we have something like that. You have this one in your db, but resolution is very low
...
It's partly what I mean by content and perfectly doable given the time. The only way it gets done any time soon is if we get more people on the dev team or decide to work on content instead of new modules with current one.As much as I'd like to see more content, it requires actual modules to be implemented properly.
As much as I'd like to see more content, it requires actual modules to be implemented properly.
I propose to finish BE (because arena), SE, ST, clones (because it's mostly about balancing and content rather than coding) and MC house (because you need to live somewhere if you don't have a brothel and focusing on arena or SE, as well as girls that help you), and then work on content until we'll be satisfied enough to continue adding modules.
Yup. I thought about things like upgrades, rooms for girls, mini-jobs for them (personal guard, maid, bed warmer, etc.), but I guess you could call it content as well.
Also about pregnacy thing :
I kinda dont understand why should it be hastned ?
Pregnacy = 9 months = 270 day in game.
You can make it that 4 months girl dosnt know she is pregnant(hello medival times) and chance for discovering is : 25% * Number of Full months passed.
After 4 month (dosnt metter when its discovered) girl can't work with sex related things
After 6 month she cannot work at all.
That leaves 3 months = 90 days of not being usefull.
I had multiple (well... 3) games that lasted over 900 days....
+ 1 small idea.
Now real problem is what happens after baby is born. You could make that Slave Guild takes it + Add possibility of buying almost adult (lets say 15+ ) children from guild :
Depending on your tastes :
- Can work in all business other then sex related until she is mature ( 360 720 or 1080 days depending on what age was she bought)
- Can work in all buisness (loli action)
sacrifice at the temple to resurrect a killed girlHm...
Of course it's very basic explanation, but possiblites are quite big.The main difference between cloning system that we want and pregnancy system that you propose is one trait, it's either "Your daughter" or "Clone". However, with clones you don't need to wait even 500 turns, you can have clones of unique characters (while daughters can be only random girls), you won't have unneeded boys. I guess it only could be important for those players that like incest, but we'll have half-sisters anyway.
I can agree that other systems are more important.
Still... these guys are so advanced they can clone and no pregnacy ?:D
Cloning is certainly more comfortable and easier to implement...
but well it sucks :D
Maybe I didnt make myself clear ;/
What purpose serves Cloning then ? It's inferior in all aspects to pregnacy other then being easier to implement.
Mabye if I knew what do you try to achive with Clonning I get enlighment of sorts.
To be honest it adds... nothing to game ?More than feauters of pregnacy that you proposed. Selling a child once per X turns or get an average random girl once per Y turns. That's exactly how it works in wm, and it's pretty boring.
But definitly can break few things :That's why you can clone only appearance and some traits ::)
More than features of pregnancy that you proposed. Selling a child once per X turns or get an average random girl once per Y turns. That's exactly how it works in wm, and it's pretty boring.
- Are normal people who are already implemented in the gameI don't understand this one. Do you have something against artificial life forms or something? Clones are just characters that are already in the game too.
- They can learn / get educated / go to courses at simplest.And clones or even ordinary girls can't do it because?..
- You can make your clanSounds cool. But what do you mean by that? I mean the game logic. What it should add to the game? It's not an MMO or something...
- Sell them as slavesNope, it's against our current concept. You cannot simply enslave free characters.
- Send them on missions / add them to your teamAnd why can't you do the same thing with any loyal girl? Actually, you already can in the dev version.
Another push, I'm expecting to finish with AA2 lines tomorrow and begin to work with AG3.AG3 again? Did I really missed that much? :)
I believe in every location there should be level interval for capturing girls, not just id. Also, I propose to capture not more than 1 girl per exploration no matter what, because teams are small enough to have troubles otherwise.
Also, iirc in wm traits play a huge role. Merciless girls have much less chance to capture someone, and so on. I could make a json with bonuses and penalties for traits if you want.
Wants to mess around with Xela.
AG3 again? Did I really missed that much? :)Sisters lines. We didn't even planned to use them back then because there wasn't a concept according to which MC's father lived in the city for some time, thus could have more than one child there. And we don't really need much for that besides AG3 lines, so I wanna add it.
Darks obsession with cloning, theories:Too bad, I dislike both SW and JP, and I'm not even familiar with the last one :D
Fan of Star Wars.
Fan of Jurassic Park.
Wants to recreate one of the last scenes “My stepmother is an alien”, when hot alien chicks, come to take away one dude.
{structure as a commentary since json doesn't support them, I hope it's not a problem.
"Hint": [
"trait name -> multiplier for chance of teleporting during exploration -> multiplier for chance to capture", "multiplier 1 means no change"
]
},
*Cloning was proposed as a possible addon to the game by me, that's true but you've been the main proponent of that for a long time :)It's still your fault though that I know about this concept in the first place :)
have spaceship follow mouse clicks with turning to the right direction (a lot of geometry funcs) but it doesn't mean that we will add it to the game.You never know. Not spaceship, but maybe ship in the ocean or something related to minigames.
Teleporting during exploration when the team is in trouble. I believe it should be up to the leader to decide when to quit based on health, area difficulty, maybe even number of potions remained, so only her traits mean something. In case if the leader is dead the team probably should return instantly.
I don't know how are you going to handle capturing though. If you going to use the most agile girl in the team, only her traits mean as well.
I would propose to throw cloning concept on the shelf for some time and you guys finish the guild and exploration.That's the plan, yeah. And ST too btw.
Sorry guys, but I'm simply not able to came up with all those descriptions required for the head items.Just create them. We always can add descriptions later.
I'd say if they drop wolf skins (after we'll add crafting items), it make sense. But if the team found usual items like weapons, we probably should write something about finding a chest/cache/stash/crypt/etc.Strange, I'm sure I wrote
"items_limit": 0
for the whole place so there should't be any item drops. (for now, still working on the list)Battle sprites look pretty good there.
So those wolves were ninja, huh? :)
(http://s001.youpic.su/pictures/1408996800/thumb_26eedd8c06b613058f881eee5bfa6eb8.jpg) (http://youpic.su/view.php?id=s001.youpic.su/pictures/1408996800/26eedd8c06b613058f881eee5bfa6eb8.jpg)
I'd say if they drop wolf skins (after we'll add crafting items), it make sense. But if the team found usual items like weapons, we probably should write something about finding a chest/cache/stash/crypt/etc.
Sorry guys, but I'm simply not able to came up with all those descriptions required for the head items.
So I can:
1 - create them without the texts, just with stats and pics
2 - just forget them and more to other work (toying with SE and tavern is next in my plan)
Strange, I'm sure I wroteCode: [Select]"items_limit": 0
for the whole place so there should't be any item drops. (for now, still working on the list)
But the exploration takes a whole day, not just this fight, so I don't think it's strange to find items during it, even if you don't fight anyone at all.
And I was imagining selling game and wolfs hides as a part of the money lot you receive (in addition to those other treasures team may find).
And seriously, you should put Cursed Forest back as a primary location, this cold area was never supposed to be the main one (and it will take me some time to make it into something playable)
Yeah. But we probably should explain this. Like
the first day: the team didn't found any enemies. The team found a stash with 20 gold.
the second day: the team was attacked by 3 wolfs and got loot worth 17 gold from them. The team found Kunai in a hollow tree.
I could write lines for that if no one wants to.
- Now damned wolves carry money ??? Ghm... but it's manageable I think (structuring texts that way).Lol, separating lot from enemies was the very first thing I asked for (=writing encounters itself bellow the area, even with those texts you talk about), You decided that you don't want that, and now you complain? :D
You can work on the area as you please, just leave me the very first entry for testing.I wanted to add the item lists soon and it also miss any kind of balance whatsoever.
Lol, separating lot from enemies was the very first thing I asked for (=writing encounters itself bellow the area, even with those texts you talk about), You decided that you don't want that, and now you complain? :D
There were some decent ideas for acceleration...
*I f#cking hate any idea of accelerated pregnancy/growth.Yeah, that's our Xela, get used to it ::)
I don't understand? Are you in favor of mobs dropping Gold or not?I don't really care myself. Unreasonable drops are just that common in rpgs, that it's not really something to be worried about much I believe.
Sorry guys, but I'm simply not able to came up with all those descriptions required for the head items.
So I can:
1 - create them without the texts, just with stats and pics
2 - just forget them and more to other work (toying with SE and tavern is next in my plan)
Yeah, that's our Xela, get used to it ::)
I don't really care myself. Unreasonable drops are just that common in rpgs, that it's not really something to be worried about much I believe.
I'm just surprised you guys brought this up, after not so long ago when it was decided to drop most of similar ideas for the sake of simplicity (nothing against that decision)
==============================================================
Total rooms in the guild:
1 for Service Girl + 1 if Hall/Bar
1 for Manager
+ 3 for every team
With 5 - 6 teams max, we can will have just below total of 20 rooms.
During the Next Day:
*We display area pic + small girls portraits that participate with corresponding texts
or
*Per character reports
Need some opinions for the above...
Let me know what you think? I will attempt to code this tonight.
I vote for the first option of display:
Team1 - got lost 15 meters from their home base.
Team2 - spend the day sunbathing.
Team3 - found the legendary treasure of DarkTI and escaped with it in an unknown direction
Team4 - did their job!
LoL
They are not in teams. Teams are actually purely logical units, a girl can be a part of the team but work as whore in a completely different building. Took a lot of work to code but it was necessary for some parts of the concept.
Basically, I want girls that are just sitting in the guild, without doing any exploration to "have a life/tasks". That's what is suggested in the concept.
Let me try to write out a base concept for FG jobs/upgrades other than exploration:Do you know I never ever thought about that FG could be player owned building, and that there could exist something like a job for that? :D That's why there was so much misunderstanding between us before, sorry for that.
Do you know I never ever thought about that FG could be player owned building, and that there could exist something like a job for that? :D That's why there was so much misunderstanding between us before, sorry for that.
----------------------
Will in the future those teams be able to participate in arena too?
Then I would go with the second option, displaying what everyone of them did on her free day. For example:
Girl1 - spend the day shopping.
Girl2 - went to the arena to watch the fights.
Girl3 - spend the day with her boyfriend
Girl4 - slept all day!
So you're ok with that concept? Nothing to add/take away at the moment?I can't really imagine much besides resting/healing and training for them to do... So I would expect more like a healers or trainers there to help with that but that could be that service girl helping them with rest and they could train each other like the guards do. So not really.
"Went to Arena to watch the fights"... I should have thought of that as a mini event. Dark missed it as well when writing traits-based stuff during the brothel Rest routines.We didn't add it because it doesn't have any corresponding girlpack pictures... There a lot to improve there in rest action but I postponed that until tag review.
We didn't add it because it doesn't have any corresponding girlpack pictures... There a lot to improve there in rest action but I postponed that until tag review.
Yeah, but Dark keeps asking for mooore :DTechnically speaking, the chance to find gold coins in abnormal areas is close to 0. Even if gold coins are used in some another world as money, the chance that they have the very same coinage is very low, because we talking about very different worlds. I already took some steps in this direction, I created multiple icons for objects like gems, artifacts, chests with coins of strange coinage. And when I'll deal with girlsmeets, you better prepare yourself for a new item type, "loot", which main (but not the only one) purpose is to be dropped during explorations and sold.
Let me know what you think? I will attempt to code this tonight.Sound good, but we need more options for slaves, I guess. They could help free girls to heal wounds for example, not just cleaning.
Rest actions are limited in their numbers so we might use the same technique for them as I have with the SE picture (Arena + Filtered Profile pic).Yup, that could work. I like those visual stuff (but I would still prefer to focus on the girpacks pics first).
"Went to Arena to watch the fights"... I should have thought of that as a mini event. Dark missed it as well when writing traits-based stuff during the brothel Rest routines.
Anyway, you're off again, those are girls specific events during next day if they're resting/not doing anything. I am talking about Fighting Guild jobs/events.I’m getting lost in here… You are talking about reporting the girls daily growth and what they did working (same as it is displayed in brothel summary)?
Sound good, but we need more options for slaves, I guess. They could help free girls to heal wounds for example, not just cleaning.
Also, maybe 1-2 guards to secure the building? There supposed to be rmgirls and loot, so...
Also, I wonder what to do with captured girls even after we'll add ST and dungeons. Not to mention that we don't have a dungeon yet. Maybe there should be a separate room for them right in the guild, so MC could take a look at them, release, sell, befriend and convince to join via interactions system, etc.
Also it could start a quest chain (side story), when a certain free girl is a fan(or a psycho fan) of the MC arena performance and will approach him on her own.
I’m getting lost in here… You are talking about reporting the girls daily growth and what they did working (same as it is displayed in brothel summary)?
Unless a Service Girl, sending slaves to live in the Guild should simply not be reasonable. We don't need to add any jobs for them.So far they are useful only for brothels. They are useless at arena, MC house doesn't have girls at all, guild could use 1 slave at all (2 with upgrade).
Yeah, exactly. Simple side jobs if crew isn't off on an exploration run.
So far they are useful only for brothels. They are useless at arena, MC house doesn't have girls at all, guild could use 1 slave at all (2 with upgrade).
They are slaves, not sex androids or something. They can do any work.
So harassing people for money, working as a bodyguard for a jewel merchant, drinking in the bar while waiting for next assignment, looking for a missing kitty, providing security in some event in the city. Correct this time?
Strange, seems to work.Here is mirror - http://www.fileswap.com/dl/r534b6ynTc/Images.rar.html
options = {Couldn't you create it as another custom function?
"ct('Shy')" = ["Text 1", "Text 2", "Text 3"],
"(ct('Kuudere') and chr.occupation == 'Warrior') or (chr.status != 'slave' and chr.charisma > 1000000000)" = ["Text 1", "Text 2"]
}
replies = list()
for i in options:
if bool(eval(i)):
replies.extend(options)
if replies:
$ rc(*replies)
else:
$ rc("Generic reply if all else fails 1", "Generic reply if all else fails 2", "etc...")
Couldn't you create it as another custom function?
Something like $tr("trait1" :( "line1", "line2"), "trait2" :( "line1"), ("line2")..."traitN" :( "line1"),("line2")).
The more lines I'm adding, the less part of them players will actually see in most cases if we'll use elif everywhere. Good example here is interest topic where you used elif and dice. The chance to see the lowest line after all dices is about 0,04%, this is insane.
Elif structures do make my work easier because we don't need lines for every trait thanks to them. But they cannot be used everywhere.
Ok, I tested the SE items field - those items drop, but the chances are totally off somehow. Items drop like mad no matter what chance I set there.
Like:
"items": {"Mallet": 0.00002}
and it still dropped in 4 days out of 10 :D
Also, saying "no" to "Are you sure to sent the team XY exploring" still send the team out there.
I'll take a look at the items drops, chance increases with every day, I prolly made it too aggressive.Ok, I see it now.
if dice((self.area.items[i]*(0.2 + (self.area.risk*0.008))*(1 + self.day*(0.025*(1+self.area.risk/100)))))
day 1 risk 1 = i*0.213
day 15 risk 1 = i*0.287
day 1 risk 50 = i*0.623
day 15 risk 50= i*0.938
day 1 risk 100= i*1.05
day 15 risk 100=i*1.75
Ok, I see it now.
Then I suggest something like this:Code: [Select]if dice((self.area.items[i]*(0.2 + (self.area.risk*0.008))*(1 + self.day*(0.025*(1+self.area.risk/100)))))
Code: [Select]day 1 risk 1 = i*0.213
day 15 risk 1 = i*0.287
day 1 risk 50 = i*0.623
day 15 risk 50= i*0.938
day 1 risk 100= i*1.05
day 15 risk 100=i*1.75
I don't understand how works part gm_interact_abouther in labels-gilrsmeets. No elifs here, does it already use "tr" structure?
I don't understand how works part gm_interact_abouther in labels-gilrsmeets. No elifs here, does it already use "tr" structure?I wrote that long ago so there is simpler python without any shortcuts functions, but if I understand it correctly, that requested "tr" thing would be doing almost the same thing like this label do.
if not attacked and dice(self.area.risk/2 + self.day): # Needs to be improved
attacked = True
for i in xrange(ap):
lol, I totally missed this. That means that the whole code is checked for every girls AP, right? You can rewrite it if you like as in "needs to be improved".Ok :)
I usually write that code without too much thought, just making sure that it's working and manageable.
btw, did we just gained a quest tracking? whoa, nice
btw, did we just gained a quest tracking? whoa, nice
On another note, I chose quests as it was fairly simple and got me into the code. Still don't really know what I should prioritise so if any of you wanna just throw something at me, go ahead.
@Xela: How is FG building named for placing girls in it?
I would like to have some girls there from a start for easier testing, so I tried send some to: girl.location = "Fighters Guild" but that is not working.
Still don't really know what I should prioritise so if any of you wanna just throw something at me, go ahead.If you don't know what to do and don't have any preferences yet, you can start with either resolving known issues with items/traits systems and min/max levels of stats or creating a slave training system (we even have a concept for it). However, any help is welcomed.
Yeah, I can look at the stats / slave training. Lets see how badly I can change everything.
for key in self.mobs:
if dice(self.mobs[key][0]):
enemies = (self.mobs[key][2])
when I put 2 entries of the same mob in json:"mobs": {"Wolf": [30, [1, 0.1, 2], 3],"Wolf": [10, [1, 0.1, 2], 2]}
the game only uses values from the last one. I run into something I don't understand how to do:Code: [Select]for key in self.mobs:
when I put 2 entries of the same mob in json:
if dice(self.mobs[key][0]):
enemies = (self.mobs[key][2])Code: [Select]"mobs": {"Wolf": [30, [1, 0.1, 2], 3],"Wolf": [10, [1, 0.1, 2], 2]}
the game only uses values from the last one.
Is there a way to made it check for each one? (if it would be too complicated then np, I try to figure some workaround)
You can't have two keys in a dict that are the same...ok, ty.
You can restructure the dict itself and use something else for the keys.
I've gone through your concept for the ST and done a bit of theory-crafting. Before I go any futher could you tell exactly (or at least a general idea) what you use each stat (health, int, etc) for currently / what you plan to do with them? Also could you clarify "resolving known issues with items/traits systems and min/max levels of stats"?
Lot of what your talking about requires some prerequisite knowledge of your past development and only so much can be gleamed from the code.
Also could you clarify "resolving known issues with items/traits systems and min/max levels of stats"?I'll quote Xela here:
I think that all items/traits that reduce the maximums should be removed from the game or redesigned just like all items/traits that push minimum out of range were redesigned. Right now there is a good amount of items that when used, reduce the maximum below 0 completely f#cking up some part of the game. Code that would be required to mitigate that is very complicated and would be hard to work with just as it would have been for minimums. I've noticed that after the recent items review.
we need to expand the concept...
Items have gotten too complicated, they can:
Add a trait permanently
Add a trait temporarily
Track if a trait that was added temporarily doesn't remove a trait that was there permanently when reversed
Add a permanent trait when their is a temporary trait in place
Remove a permanent trait when there is a temporary trait in place
Add stats after being work for x number of turns
Mod stat temporarily
Mod stat permanently
Mod max stat temporarily
Mod max stat permanently
Make sure items do not take stats with them when they are removed if those stats were maxed out already
Make sure that items do not prevent the ability to gain stats while those items are worn
I prolly forgot a bunch of stuff + I doubt all of this is actually used or been properly tested. Traits themselves complicate it all even further...
Basically, the main problem right now are items like Ultimate potions that just send max to a complete sh!thole. Maybe with that removed, nothing else needs to be done... extensive testing required (http://www.pinkpetal.org/Smileys/DarkB/smiley.gif) (as in a release, even Jaeke wouldn't be able to test every combination).
If tweaking the ultimate potions isn't enough, we could add level requirement to use an item, making sure higher levels with much higher max will prevent it going below 0. Otherwise I'll have to revisit the the system again, I was a lot less versed in python when it was written than now so there may be something that can be done without too much fuss. But in that case, we should expand the system while I'm at it, I recall you had some ideas for an expansion as well.
Charisma and character - in girl stats are responsible for......?
Character is checked at times during girlsmeets/interactions to see if a girl can be persuaded by the MC to do something.
So, lower character the girl is more willing?
Another (stupid) idea about a mini event. When entering the main street, there would be 3% chance of poping up an NPC (shady merchant) that would have some exclusive items for big $$$. What do you think?I would prefer for such merchant to appear at some more predictable rate, like every first day in a month or so, if it's the case of a traveling merchant. Or, in case of shady character, at least be able to bribe someone who you can find (or spread the word in a tavern) to increase that chance for him to appear (so he will find you).
More suggestible/obedient, yes. Willingness can depend on traits and other stats or maybe even equipped items. Stats/Traits will always have slightly different meaning to every dev team member/modder. Don't read to much into it, while we're all more or less on the same page, it's ok.
I would prefer for such merchant to appear at some more predictable rate, like every first day in a month or so, if it's the case of a traveling merchant. Or, in case of shady character, at least be able to bribe someone who you can find (or spread the word in a tavern) to increase that chance for him to appear (so he will find you).
It's just that a 3% chance seems to be too plain and random for event with a real gameplay value.
I was thinking something more in lines of a street monger. "Hey mister you need a watch. Check this" and he reveals insides of his long coat, there are hanged tens of watches there. Of course some items would be good, but lets say 60-70% would be trap, money wasters.Ok, this sound like more fun :) You can make any kind and number of items I guess, even totally crap stuff, item is just a small pic and text for the game, nothing to be nitpicky about.
I was thinking something more in lines of a street monger. "Hey mister you need a watch. Check this" and he reveals insides of his long coat, there are hanged tens of watches there. Of course some items would be good, but lets say 60-70% would be trap, money wasters.
In any case, creating extra layers of stats and delimiters would make it possible but right now the only issue are two or three items and slight modifications to them will make the game run perfectly.
I'm gonna defer to you on this point, as I'm not familiar enough with it to know what should be changed and how.
I'm only going to focus on training whats currently available an only with the sex/service/strip girls with the master for now until thats working properly then build it up.
Getting in 'mistresses' and the MC home/slave living conditions can wait until thats all working.
...I need to know where is frog sprite (the big one, with crown), I cannot find it. I'm going to find a less cartoonish version, like I did for leprechaun.
On a separate topic: I found the Frenchy RPG Maker project (with insane graphics (considering that it's rpg maker))I bet they have several artists. It's not free after all, so it's possible to hire people.
I bet they have several artists. It's not free after all, so it's possible to hire people.
Most of the stuff is not drawn, it's 3D rendered.Can you do it? I cannot. We already have great rendered bg for arena though, but I think the user who made it had long disappeared (too bad, we could use his skills for temple of time).
SF Updated:No head slot? Isn't is the simplest thing ever to add one at this point? :)
Klaus asked me how difficult it would be to add sets into the game. Meaning elven boots + elven gloves + elven armor = additional bonus.
I have items for several sets already, but I'm not sure if we should do it if it will be too much trouble.
No head slot? Isn't is the simplest thing ever to add one at this point? :)
Also, I think we should reduce the number of ring slots to 1. It's not diablo or something, we don't have infinite amount of different rings, even with the help of Klaus.
I'd prefer to have some another slot in the future instead, like underwear or something. Would make perfect sense for girls, unlike wm, where underwear=body slot, so many non-warriors there are always half-naked, while warriors have nothing under that cold iron armor, which is far from common sense.
First two are possible without much of a fuss. I am not going to introduce either one into the game without support from rest of the dev team. Both are doable without changing the current items system.
Third propositions will plainly mean that we'll have to track every item separately... which comes with a bunch of advantages (more options/power) and disadvantages (more work/computing resources required).
Sadly all of the approaches will require bit of a hassle, I haven't heard am overwhelmingly simple and great idea since it was suggested that slaves cannot advance past whore rank three :) Simple and powerful at the same time :)
First off, I was thinking that a merchant with some sort of random item selection. What I mean by that is basically like the whole item "gambling" system that was used in Diablo and other games. The player could choose to buy an expensive sword, but the player won't know what the sword actually is until after it is purchased. It could be something awesome, or it could be a regular Long Sword. Of course, this would be applied to other items (a random potion, a random misc item, etc.).Yeah, I've seen these things in many games. It's even more advanced in swtor, where you could get several items from completely different categories at once, with different layers of randomness.
Second, adding a cost per person for exploration. Now, I've only been playing the alpha, so I don't know how things are setup in the current build. However, I believe that Xela was working on an exploration system (I could be wrong though). Anyway, the cost to explore an area would scale, based on the difficulty of the area. The reasoning behind this is that the characters must have the necessary supplies to make the trip and back. These supplies wouldn't show up in anyone's inventory, so there wouldn't be any need to create new items. An idea for the description would be something like "Tents, bedrolls, food, first aid kits (to save a character who is reduced to 0 HP), and other necessities for travel." Not a word for word description, but you get the general idea.It's possible, but I'd like to see completed SE for a start. Like in those videos that Xela keeps posting here, maybe without fancy graphics, but with complex and interesting mechanics.
Third, incorporating item durability into most of the items. Sure, item durability is kind of a cheap way to force a money sink onto the player, but it does make sense. That 3000 gold dress might not last too long in the lines of work that are available for your girls. Thus, it will eventually become damaged and will need to be replaced. However, to help with micromanaging issues, the player would need an "auto-buy" function or a way to repair items in bulk.I don't even know. I wonder what other players would think about it. I mean, they probably would hate the idea.
4th @Darkcuttingofffingers. Hell no bro! Three slots for 10 finger (could be 20 if there would be a toe ring item class or an ankle bracelet for girls) are enough don’t remove it. If someone wants to have them all used then let them. Spend that hard pimped cash on that gold!Ok, why 3, not 2, like in most games? (believe me, you don't want to know how Xela explained it back then ::) )
Ok, why 3, not 2, like in most games? (believe me, you don't want to know how Xela explained it back then ::) )
It's possible, but I'd like to see completed SE for a start. Like in those videos that Xela keeps posting here, maybe without fancy graphics, but with complex and interesting mechanics.
Ok, why 3, not 2, like in most games? (believe me, you don't want to know how Xela explained it back then ::) )
No head slot? Isn't is the simplest thing ever to add one at this point? :)
SE = Simulated Exploration.My bad, I mean EE.
Players are used to three by now, why change it...I'm afraid we don't have enough rings to provide enough variety for whole three slots. It's not a problem in other cases, other slots are unique. And it's kinda illogical to create much more rings than other items only because we have three times more slots when can have 2 or 1. Though it's a matter of taste, I guess. If you think it's not a problem, keep them.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 142, in script
python:
File "game/script.rpy", line 148, in <module>
char = load_characters()
File "game/library/functions.rpy", line 28, in load_characters
dir = content_path('chars')
File "game/library/functions.rpy", line 6, in content_path
return renpy.loader.transfn('content/' + path)
Exception: Couldn't find file 'content/chars'.
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 142, in script
python:
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 756, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 148, in <module>
char = load_characters()
File "game/library/functions.rpy", line 28, in load_characters
dir = content_path('chars')
File "game/library/functions.rpy", line 6, in content_path
return renpy.loader.transfn('content/' + path)
File "E:\renpy-6.17.6-sdk\renpy\loader.py", line 497, in transfn
raise Exception("Couldn't find file '%s'." % name)
Exception: Couldn't find file 'content/chars'.
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 335, in script
python:
File "game/script.rpy", line 337, in <module>
pytfall.arena = Arena()
NameError: name 'pytfall' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 335, in script
python:
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 756, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 337, in <module>
pytfall.arena = Arena()
NameError: name 'pytfall' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 365, in script
$ all_chars = char.values()
File "game/script.rpy", line 365, in <module>
$ all_chars = char.values()
NameError: name 'char' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 365, in script
$ all_chars = char.values()
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 756, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 365, in <module>
$ all_chars = char.values()
NameError: name 'char' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 366, in script
while all_chars:
File "game/script.rpy", line 366, in <module>
while all_chars:
NameError: name 'all_chars' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 366, in script
while all_chars:
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 1495, in execute
if renpy.python.py_eval(self.condition):
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1416, in py_eval
return eval(py_compile(source, 'eval'), globals, locals)
File "game/script.rpy", line 366, in <module>
while all_chars:
NameError: name 'all_chars' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 371, in script
$ del all_chars
File "game/script.rpy", line 371, in <module>
$ del all_chars
NameError: name 'all_chars' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 371, in script
$ del all_chars
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 756, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 371, in <module>
$ del all_chars
NameError: name 'all_chars' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 372, in script
if girl_unique_label in globals():
File "game/script.rpy", line 372, in <module>
if girl_unique_label in globals():
NameError: name 'girl_unique_label' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 372, in script
if girl_unique_label in globals():
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 1545, in execute
if renpy.python.py_eval(condition):
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1416, in py_eval
return eval(py_compile(source, 'eval'), globals, locals)
File "game/script.rpy", line 372, in <module>
if girl_unique_label in globals():
NameError: name 'girl_unique_label' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/script.rpy", line 386, in script
python:
File "game/script.rpy", line 387, in <module>
for i in char.values():
NameError: name 'char' is not defined
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 386, in script
python:
File "E:\renpy-6.17.6-sdk\renpy\ast.py", line 756, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "E:\renpy-6.17.6-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 387, in <module>
for i in char.values():
NameError: name 'char' is not defined
Windows-Vista-6.0.6002-SP2
Ren'Py 6.17.7.521
PyTFall 0.47 Alpha
My bad, I mean EE.
SE could use moar levels of complexity too though. I imagine a global map with regions highlighted in the same manner as locations in the city. Sometimes I wonder if hiring an inexpensive artist at devianart is the only way to get decent maps and bgs for rare locations...
@Xela
The shit that pops up:
I don't even know how I explained it back then... Players are used to three by now, why change it...
Klaus asked me how difficult it would be to add sets into the game. Meaning elven boots + elven gloves + elven armor = additional bonus.
I have items for several sets already, but I'm not sure that we should do it if it will be too much trouble.
2 hands and an orifice?
Just have a function that runs whenever an item is equipped that checks if the new item belongs to a set, and if the character is wearing it. Have another function check if the item being removed also belongs to a set that was complete. Then just have them apply/remove the traits / effects / whatever.
Also currently I'm setting up ST to allow for the changing of current/min/max stats and adding/removing traits. Is there anything else we want them to possibly do?
Stats/Traits is all we have at the moment that defines a character...Base races too, theoretically. Json is already there, but not implemented yet.
Base races too, theoretically. Json is already there, but not implemented yet.
Shouldn't it be more difficult to train unusual races?
I'm working on interface and ready to show my progress. This is not a finished work.
http://www.fileswap.com/dl/b6L0smwQKO/Elements.rar.html
...
Aaand out of nowhere I got rubella. Well done, immune system ::)
That means less regular updates from me in the near future, can't be helped. Don't think that I'm dead unless I'll disappear for months.
Aaand out of nowhere I got rubella. Well done, immune system ::)
That means less regular updates from me in the near future, can't be helped. Don't think that I'm dead unless I'll disappear for months.
In game, the selected area highligts as is picked for the adventure.I like this. It has almost every possible terran in it, it could use the same selecting like the city and it looks like that guy is easilly erazable if needed. You have my vote :)
I like this. It has almost every possible terran in it, it could use the same selecting like the city and it looks like that guy is easilly erazable if needed. You have my vote :)
I'm working on interface and ready to show my progress. This is not a finished work.This is awesome :)
http://www.fileswap.com/dl/b6L0smwQKO/Elements.rar.html (http://www.fileswap.com/dl/b6L0smwQKO/Elements.rar.html)
Wtf is with "month", it shouldn't be that serious...?This is one of those diseases that are quite safe for children and terrible for adults. I was barely able to move for the last week. Current medicine cannot do much against viruses, so my body has to synthesize a cure by itself.
Ended up deciding to place the actual training content in json files. Worked up an example for obedience training. All numbers were just made up, but the content is generally self-explanitary.Let's see, girls can't really refuse to participate in some types of training (talking, forced actions, passive punishments), while others require cooperation.
The only things that aren't obvious are that "reqs" are requirements that the girl must meet to take the training, if any. "hero" is the same but for the person training them.
There is little in a sense of added gameplay value in adding that background to the game. Also if we add EE support later, we might want to have surrounding areas to the city and all that work might become obsolete.Not gameplay, gui. Also, I imagine we can display various information about locations on the map.
I wonder where should I put AG3 lines about MC's and girl's common past, like "You used to tag along with me wherever I went when we were little.". For now I stack them into high disposition greeting lines, but maybe it would be better to create a new topic "about past" available only for girls with half-sister trait? Or to make it a part of "about her" topic?
What do you think?
About her sounds like a good bet!Ok. I'm waiting for randomising function, without it girlsmeets cannot be completed properly.
About her sounds like a good bet! This also sounds like unique stuff... not generic.
Update (done by Gismo, he's still figuring out Mercurial)
- Fixed broken pref theme
- Added Gismos new work
- New chat button
- New font
(http://s24.postimg.org/5pwnh9ng1/9_11_2014_9_35_16_PM.jpg) (http://postimg.org/image/5pwnh9ng1/)
Ok. I'm waiting for randomising function, without it girlsmeets cannot be completed properly.
To clarify again, I'm talking about function that gives random reply like $rc, but uses several lists depending on existing traits.
Something like tr(trait1:(reply1, reply2), trait2:(reply1, reply2), ... , traitN(reply1, reply2)). So it randomly selects a trait for a start (if a girl has it), and then selects a reply. I'm not sure what to do if non of the traits exist though. Then again, I can use ct every time to make sure that at least one trait exists.
if not ec({"Aggressive": ("Aggressive Girl!", "Girl that is Aggressive!"),
"'Aggressive' in chr.traits and chr.disposition > -500": ["Aggressive Girl that doesn't think that you're a complete shit!"]}):
g "Some default reply..."
hi , i don't really know if this is where i can ask a question like this , but i read that you keep making new updates , where can i download them ?
Would this (http://pastebin.com/rHt6tbu7) work?
$ line = rts(chr, {"Smart": ["Smart Girl!", "Girl that is Smart !"],
"'Smart' in chr.traits and chr.disposition > -500": ["Smart Girl that doesn't think that you're a complete shit!"],
"default": ["Meow"]})
g "[line]"
if not line:
"Do something else"
$ line = rts(chr, {ct("Dandere"): ["I sleep on my days off. ...Is that bad?"],Am I right?
ct("Dawdler"): ["I spend my days just lying around. Isn't there anything to do around here?", "I like beach sports, y'know? Just watching, though."],
co("Prostitute"): ["Finding the best ways to please men.", "Trying to find someone who'd try interesting positions, if you know what I mean."],
"default": ["Nothing special, really."]})
g "[line]"
Am I right?
Hey everyone!
A few comments on a few things.
The tagger is progressing, I will not give an ETA yet though. But you guys are allowed to discuss the tags here (http://www.pinkpetal.org/index.php?topic=1895.0). Especially the slave training tags and maybe (I'd say eventually) tags for other character genders need to be taken care of.
I also want to leave my opinion on the new interface components. I do like Gismo's design, it's consistent yet the elements are diverse enough to be interesting. There are two problems (from a web designers point of view): The backgrounds and the fonts.
Note: I'm referring to this (http://postimg.org/image/emighztpp/), this (http://postimg.org/image/bexrxyabx/) and this (http://postimg.org/image/5pwnh9ng1/) picture posted earlier.
The background art is drawing way too much attention (on both the talk panel and the buttons). To fix this, contrast and saturation for the flower patterns need to be turned down significantly.
The fonts are styled more than desirable and there are too many different fonts. The second problem is simple: Settle with a maximum of three fonts: Navigation elements, text and titles. Note that titles don't necessarily need an own font.
Navigation elements (e.g. the buttons on the talk panel) should have a simple, sans serif font without effects that is very easy to read. The spacing may be a bit wider than usual.
Titles (e.g. the buttons on the main page) should also be sans serif, but it may be ornamental. The spacing should be wider than usual, depending on the font. Lining numbers are desirable, effects are optional. Optionally, the navigation element font can be used if you do not want an ornamental font.
The font for text can be sans serif, but most prefer serif fonts for continuous texts. It should be proportional, the numbers may be non-lining and it musn't be ornamental. Normal spacing is preferable, no effects should be used.
Have fun!
I'm sorry, but an uncaught exception occurred.
While processing the xysize property of anonymous style:
File "game/library/screens/pyt - screens - girlassign.rpy", line 8, in script
with dissolve
TypeError: 'int' object has no attribute '__getitem__'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/library/screens/pyt - screens - girlassign.rpy", line 8, in script
with dissolve
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\ast.py", line 1222, in execute
renpy.exports.with_statement(trans, paired)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\exports.py", line 1222, in with_statement
return renpy.game.interface.do_with(trans, paired, clear=clear)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 1806, in do_with
clear=clear)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 2145, in interact
repeat, rv = self.interact_core(preloads=preloads, **kwargs)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 2393, in interact_core
root_widget.visit_all(lambda i : i.per_interact())
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\screen.py", line 386, in visit_all
self.child.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 332, in visit_all
for d in self.visit():
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\layout.py", line 909, in visit
return [ self.style.background ] + self.children
File "styleproperties.pxi", line 3663, in renpy.styleclass.Style.background.__get__ (gen\renpy.styleclass.c:158664)
File "style.pyx", line 456, in renpy.style.StyleCore._get (gen\renpy.style.c:6189)
File "style.pyx", line 652, in renpy.style.build_style (gen\renpy.style.c:8651)
File "style.pyx", line 649, in renpy.style.build_style (gen\renpy.style.c:8572)
File "stylepropertyfunctions.pxi", line 8306, in renpy.styleclass.xysize_property (gen\renpy.styleclass.c:65528)
File "styleclass.pyx", line 77, in renpy.styleclass.index_0 (gen\renpy.styleclass.c:8542)
TypeError: 'int' object has no attribute '__getitem__'
Windows-7-6.1.7601-SP1
Ren'Py 6.18.0.635
PyTFall 0.47 Alpha
I agree with everything save the backgrounds saturation (kinda like them standing-out).That's an antithesis. The background musn't stand out, that's in its name (for a reason). While it might look fancy, it will get more annoying the longer you have to look at it.
We didn't expect graphics to come in so soon... original plan was to finish all major modules, finalize some content and try to design interface afterwards. There was no consistency before Gismo because we just threw together any resources we could find to have examples and options when we reach a more or less finalized version.Yeah, I figured that, that's why I didn't complain earlier :D .
Somethings either wrong with the styles, or in my copy as the girl assign screen no longer works at all.Code: [Select]I'm sorry, but an uncaught exception occurred.
While processing the xysize property of anonymous style:
File "game/library/screens/pyt - screens - girlassign.rpy", line 8, in script
with dissolve
TypeError: 'int' object has no attribute '__getitem__'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/library/screens/pyt - screens - girlassign.rpy", line 8, in script
with dissolve
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\ast.py", line 1222, in execute
renpy.exports.with_statement(trans, paired)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\exports.py", line 1222, in with_statement
return renpy.game.interface.do_with(trans, paired, clear=clear)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 1806, in do_with
clear=clear)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 2145, in interact
repeat, rv = self.interact_core(preloads=preloads, **kwargs)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 2393, in interact_core
root_widget.visit_all(lambda i : i.per_interact())
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\screen.py", line 386, in visit_all
self.child.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 335, in visit_all
d.visit_all(callback)
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\core.py", line 332, in visit_all
for d in self.visit():
File "C:\Program Files (x86)\Renpy\renpy-6.15.7-sdk\renpy\display\layout.py", line 909, in visit
return [ self.style.background ] + self.children
File "styleproperties.pxi", line 3663, in renpy.styleclass.Style.background.__get__ (gen\renpy.styleclass.c:158664)
File "style.pyx", line 456, in renpy.style.StyleCore._get (gen\renpy.style.c:6189)
File "style.pyx", line 652, in renpy.style.build_style (gen\renpy.style.c:8651)
File "style.pyx", line 649, in renpy.style.build_style (gen\renpy.style.c:8572)
File "stylepropertyfunctions.pxi", line 8306, in renpy.styleclass.xysize_property (gen\renpy.styleclass.c:65528)
File "styleclass.pyx", line 77, in renpy.styleclass.index_0 (gen\renpy.styleclass.c:8542)
TypeError: 'int' object has no attribute '__getitem__'
Windows-7-6.1.7601-SP1
Ren'Py 6.18.0.635
PyTFall 0.47 Alpha
It seems that this "about her" label got broken by some automatic "rc" replacement or something. I'll push a fix.I don't have any problems with rc instead of choice. Could you be more specific? The game doesn't crash or something, and rc returns a random reply too.
moar lines
I don't have any problems with rc instead of choice. Could you be more specific? The game doesn't crash or something, and rc returns a random reply too.If you use the "rc" code and just ask any girl for "about her" option, she give you one response on every trait she have instead of just one random answer.
$gm_abouther_bisexual = (choice(["In love, gender makes no difference..."]))
and then use "g" to convert it into renpy.say once at the end $g(choice(gm_abouther_list))
$gm_abouther_bisexual = rc("In love, gender makes no difference...")
instead on adding just a one string you are calling the whole renpy.say funtion in every "if" check which totally kills the point of building a list (the label was even missing the part where you use that list)Well, here is interface update:
- New patterns for main menu and main screen buttons
- New Font
- Remake bright town map
- New calendar and main buttons frame
- Some interaction chat frame fixes
(http://s30.postimg.org/xghmowmnh/2014_09_16_00_12_15.png) (http://postimg.org/image/xghmowmnh/)
(http://s30.postimg.org/7m7tz4mnh/2014_09_16_00_13_41.png) (http://postimg.org/image/7m7tz4mnh/)
(http://s30.postimg.org/3r4fwk3hp/2014_09_16_00_13_58.png) (http://postimg.org/image/3r4fwk3hp/)
(http://s30.postimg.org/q4c6jd4fh/2014_09_16_00_15_42.png) (http://postimg.org/image/q4c6jd4fh/)
why to change things that are were working fine anyway?Because I did it via autoreplacement in order to make the file more clear for players, ie have one function instead of two. Ok, I'll change it back for this label.
Because I did it via autoreplacement in order to make the file more clear for players, ie have one function instead of two. Ok, I'll change it back for this label.
I need to take a look at what you're doing with girlsmeetsI'm gathering lines. I'll let you know when I'll actually change its structure (I will very soon).
Done with mainscreen interface elements:Cool icons btw. Finally we got rid of those confusing text buttons.
I'm gathering lines. I'll let you know when I'll actually change its structure (I will very soon).
Cool icons btw. Finally we got rid of those confusing text buttons.
self.img = self.girl.show("tag1", "tagN")
self.img = self.course.get_image(self.girl)
# --------
def get_image(self, girl, **kwargs):
kwargs[self.imageMode] = True # normal, any, etc
if self.noImageTags: kwargs["exclude"] = self.noImageTags
if self.imageTags:
if girl.has_image(*self.imageTags, **kwargs): return girl.show(*self.imageTags, **kwargs)
# Fallback
return girl.show("profile", "happy", **kwargs)
Code: [Select]kwargs[self.imageMode] = True # normal, any, etc
I am not sure what this does without looking at code but show method is not very likely to mess tags up. Is it possible that not the right girl is being parsed to the method itself (girl)?Yeah, that was wrong, I fixed it but the problem persists, it should be:
kwargs["type"] = self.imageMode
It was just a way of setting type="any", or type="first_default" or what have you.You can write new job classes for the ST, just like I did for the Simulated Exploration if you like.It is in a custom job. I made 3 TrainingJob (for the actual girl, replaces SchoolJob compeltely), TrainerJob (for the character training) and SchoolGuardJob (for the guards).
*Edit: Check the devlog, maybe something useful is reported there.
Now that this is fixed I should have the alpha ST pushed today.
It is in a custom job. I made 3 TrainingJob (for the actual girl, replaces SchoolJob compeltely)
Right, I'm pushing it now. I'm gonna post in the Game Design section about what's actually in and how it all works.
Are you sure of getting rid of this awesome background (http://img24.cz/images/39363948643377021247_thumb.jpg) (http://img24.cz/viewer.php?file=39363948643377021247.jpg) in favor of that space whatever-thing? :(
Some items transfer code seem to have vanished (at least partly *prolly just rushed merging with new code and picked "auto-fix errors with mercurial"). I'll take a look at the whole thing as time permits, new school logic looks great.Damn, I tried so hard to avoid that. I'm sure I used the kdiff3 thing for every conflict :(
I tried training (for like 5 mins) but got some minor errors.Ha, I'm always bad at testing things. Send me the error logs or tell me what happened and I'll take a look at it. I held no belief that it was all going to work ok anyway.
Damn, I tried so hard to avoid that. I'm sure I used the kdiff3 thing for every conflict :(
Ha, I'm always bad at testing things. Send me the error logs or tell me what happened and I'll take a look at it. I held no belief that it was all going to work ok anyway.
[g for g in building.get_girls() if g.action == "Guard"]
get_girls("Guard")
Damn, I tried so hard to avoid that. I'm sure I used the kdiff3 thing for every conflict :(
Can some of you please explain the custom event conditioning to me?
I want to create event with a trigger other then "look around" or "auto", for example a location with "Stay" button with it's own "Stay" events. How to do that? I don't understand it from the comments in event class.
I was thinking that event system may be good for most stable options like, for example "go swimming" on the beach or "stay" in the tavern, that will always display some regular result (created as event with dice 100 and priority=1) but will be easily expandable with more events (with priority >1) by anyone on top of that, using just one system (event class)
# If we have no actions
python:
if pytfall.world_actions.location("city_beach"):
pytfall.world_actions.meet_girls()
pytfall.world_actions.look_around()
pytfall.world_actions.add("Sunbathe", "sunbathe")
pytfall.world_actions.finish()
use location_actions(pytfall.world_actions("location name")
Done with AA, another push. I used our new rts function for interest label, works flawlessly. I will add more lines later where they are needed.
Now, what can I say about girlsmeets:
- All girlsmeets options should be available from interactions menu, at least temporarily and/or in dev mode. Because it's kinda hard to test some options when you have to look for specific girl at first.
- Compliments and insults should be processed differently, but have same replies. Ie dumb/boring/ugly success should depend on girl's stats, for example int/character/charisma, but return the same type of replies. I guess I should use jump option for replies, but I need opinions about stats.
For example, let's take stupid insult. Should it be more effective on a smart girl (because she is proud of her intelligence) or on a silly girl (because she knows that it's actually true)?
- Don't mind date labels. It's just some lines that could be useful in the future.
- We already could use friend and lover statuses, even if they won't do anything for now. I added lines for both propositions and greetings for lover status.
Added tavern location. But it's empty and meaningless now, because I don't have any quest ready yet and I couldn't figure anything useful for MC to do there that's not just a total waste of time and money with nothing gained :)
I don't know if we should add complex behaviour/responses like different behavior on isults for later (after next release)?It's not really complex. I'll just check the stat and throw disposition penalty/bonus in case of masochist depending on that using a simple formula. However, I can't decide how should it work, dammit :D
How should "All options availible" look like?I thought about a "meet" button that calls usual girlsmeets menu on spot even for hired girls.
$ chr.set_flag("lover")Ok, that settles it.
if chr.flag("lover"):
# responce
I thought about a "meet" button that calls usual girlsmeets menu on spot even for hired girls.
I've got a working mock up for custom location actions if we want them.
Currently in the label for the locations, before we show the location-specific screen we put:Code: [Select]# If we have no actions
python:
if pytfall.world_actions.location("city_beach"):
pytfall.world_actions.meet_girls()
pytfall.world_actions.look_around()
pytfall.world_actions.add("Sunbathe", "sunbathe")
pytfall.world_actions.finish()
Which creates the actions for the location. The location() function either returns False if the location is already set up, or True and creates a set list of actions for it.
These functions create controls there were considered general enough to have a ease-of-use function:
meet_girls() creates the normal Meet Girls button.
look_around() creates the normal Look Around button.
slave_market() creates the Go Shopping slave market button.
work(flag=None) creates the Work button.
add() adds a new action button, with the arguments:
- button = The name of the button.
- action = The string to use as an event trigger, or a screen action.
- label = The label to go to if no event can be run ("_events_not_found" for Look Around for instance).
- cost = The cost of triggering the event. 1 by default.
- flag = The global flag to check for screen actions.
- null_button = The label to use if the button should be null ("No Slaves Available" for instance).
- null_condition = The condition to check to see if the button should be null (can be a string, a function or a variable).
In the actual screen we put:Code: [Select]use location_actions(pytfall.world_actions("location name")
Which simply adds a vbox that loops through the available actions and adds a textbutton for them. Actions are only added if they have a default label or at least 1 action in the WorldEventsManager.label_cache that uses its action as a trigger if they are an event trigger, else checks its flag.
The WorldEventsManager.run_events() function has been modified to accept "default=None" and "cost=0" arguments as well, so the run_events("auto") calls don't need to be updated.
Yeah, I can push it now.
Currently the code for the action classes are in library/events/classes - events.rpy. The new action code is only set up for the main beach (the one accessable from the main map), the slave market and the outside arena. They test all the different actions/properties the button are built with.
See if you like it and if its worth following I can update all the other locations.
I can take a look but it sounded like a much better system then we have now. I see no reason not to keep it.
pytfall.world_actions.location("city_beach")
pytfall.world_actions.add(0, "Stay", Jump("pyt_wip_screen"), flag=("tavern_entry_brawl", "!=", day+hero.AP))
pytfall.world_actions.meet_girls()
pytfall.world_actions.look_around()
pytfall.world_actions.finish()
All the locations now use the new actions system.
Some slight changes:Code: [Select]pytfall.world_actions.location("city_beach")
pytfall.world_actions.add(0, "Stay", Jump("pyt_wip_screen"), flag=("tavern_entry_brawl", "!=", day+hero.AP))
pytfall.world_actions.meet_girls()
pytfall.world_actions.look_around()
pytfall.world_actions.finish()
- location() no longer returns a bool. It just accesses/creates the actions list for the location.
- add() requires you to pass a key as the first argument. The keys are used for ordering the actions and for replacing/removing the current actions.
work() uses key -2.
slave_market() uses key -1.
meet_girls() uses key 100.
look_around() uses key 101.- The parameters "flag" and "null_condition" can now accept a 3 length tuple that contains a condition formatted as: ("flag", "condition", value).
"condition" can be all the standard python binary operations.
Edit (Thewlis from the future):He knows first-hand how awesome the game will be in the future, that's why he joined us via temporal proxy.
I noticed some problems with buttons. That's probably has nothing to do with new buttons icons, but I still decided to test them, and in some cases they don't work as expected. Usually when one screen is opened, and you try to open another one.
alltags = list(sorted(tags_dict.values()))
alltags = list(tags_dict.values())
I know it is a minor thing, but could someone add replace the line 5 in the tagger.rpyDone.
Prolly a bug in Ren'Py. Where did you encounter this error?I can't reproduce it yet, but I found another one. Click on journal icon, then instead of clicking on main screen icon close it via cross. Leads to empty screen.
makes the tagger a lot easier to get a navigate :)
Hey there!
I think I should mention that tagging images at this point in time propably isn't a very good idea - a new tagger will be available soontm and the tags will change (or at least new ones will be added) in the near future.
Have fun!
Done.
I can't reproduce it yet, but I found another one. Click on journal icon, then instead of clicking on main screen icon close it via cross. Leads to empty screen.
Looks like I missed something, who and why added items_fg_ng_test.json? It has some cool items, but I wonder why they need a separate json.
=============================================================================
Pushed head items made by Klaus. Today is a great day, finally we have helmets :D
Hey there!
I think I should mention that tagging images at this point in time propably isn't a very good idea - a new tagger will be available soontm and the tags will change (or at least new ones will be added) in the near future.
Have fun!
Click on journal icon, then instead of clicking on main screen icon close it via cross. Leads to empty screen.
We had two helmets (seen them in the game)Yup, they are from that mysterious items_fg_ng_test.json. But the history is huge and search is useless.
Yup, they are from that mysterious items_fg_ng_test.json. But the history is huge and search is useless.You can just right click on that file directly and show it's own history :)
-------------------------------
I decided that I'll pass on any events/actions/npcs untill story concept (really looking foward to that).
We discussed that in some decent details, Klaus wrote some stuff for that as well. What exactly do you need to know about the story to create events?Really? I know like nothing, I'm not even sure if you decided to have a main story or not :) Where I can find that?
Currently I’m sitting on the side lines of PyTFall, doing some one-liners for jobs and events (text and descriptions)for crazy’s mod. I’m basically waiting for you guys to clarify some stuff in here: like traits, girls meets and locations. I have a general idea for a short story for meeting TenTen (if you want I will try to make a story graph and post it here, gimme 24h) but without the mechanics mentioned above my moves are limited. I also remember that couple months ago, while talking with Xela, he was thinking about Nami and Hinata to be the main heroines. So I don’t know if other girls should have short, independent story lines or should they branch from the main girls lines. If you want some wild pitches of potential stories for some girls just let me know.
Really? I know like nothing, I'm not even sure if you decided to have a main story or not :) Where I can find that?
I mean the stuff for MC and related NPCs, general storyline and atmosphere. Nothing much related to recruitable girls.
I thought that discussion about things like that and content in general were planned sometime after current work on things like ST is done?
I’m sending you the first part what I wrote today. If you like what you see I will go for the second part. In general I see it like this: after creating MC you pick your background story. The text would varied a little for professions. Here’s the skeletal build of the background:
-- Lost Fortune (from rich to poor)–
1. Father – assassin for one of the families
2. Father – a legend of the arena
3. Father – trader. Made a lot from trading breath mints (who would guess!).
4. Father – slacker like you. You where parasitizing on your granddads fortune.
--From Zero (poor from start)--
5. Father – a poor shop owner.
6. Father – strict soldier. Went missing after the war/escorting a caravan.
7. Father – none. You are an orphan, spend most of your life working random physical jobs at your uncles place.
8. Father – servant. “Never to bow again”, hate the idea of slavery.
9. Father – beggar. Ghetto.
INTRO FOR ALL:
PytFall the city where royalty, nobility, connections and power meets common people, poverty, slavery and desperation. They rub of each other inside the city walls, in one opinion creating an interesting cultural mix, as other may say an explosive mixture. The thing that really tells who you are and where do you belong is MONEY. With it you are the beloved by everyone, surrounded by friends and people that will do as you wish. Without it you are just another commoner, treated like air or a servant by the high society. The person that decides of fate of every citizen is the tax collector, that visits everybody once a week. He can delay your payment by a week or two but beware of falling in debt, he will be merciless if you will try to screw him.
As for me… (back-story pick)
My name is [PLAYER].
-- Lost Fortune –
1. Father – assassin for one of the families
For all what I know or should I say my father told me I should knew. He got the money that he liked to call it “his retirement found” for he’s loyal services provided to “The Family” in the city of PytSummer. Without asking any questions we settled in PytFall. We bought a mansion and couple of servants. The days past by, having a leisure live. But father got bored with the high society life style pretty quick. At some parties he starter fights with others nobilities, he often went to the arena to place bets and sometimes vanishes for days in brothels. But that didn’t bother me. I was having the best time in my life. [WARRIOR/CASANOVA]. After returning home early on the Monday morning, after night of partying I went straight to bed in my clothes. In the afternoon I was waked up by our house maid that the tax collector was here. It surprised me because father always took care of paying the taxes himself. I asked the maid where is my father but she responded that he didn’t came home yet. I got up, greeted the collector and lead him to my father’s study. I opened the safe in the study’s wall, just to find out that it’s empty. As for the tax collector he took the mansion, servants and all belongings as payment leaving me on the street in my yesterday clothes.
WAR: Spending most of the day hanging out with other high society kids focused on swinging their swords. Going to the arena to watch fights and bet who will win the next fight. Visiting the black smith and looking for exotic weapons and armors. Going to the beach to get our endurance up by swimming in the ocean or just to show off and chill in the beach bar.
CAS: Spending most of the day with my pack, flirting with daughters of other high society families or roaming the streets looking for some fun. In the evening it’s clubs for people of my status, on weekends I usually was at a party thrown by a nobility.
2. Father – a legend of the arena
Son of The Champion. To be clear, not some second rated fighter that call himself a champ but son of the most noticeable man in the land. I [PLAYER] am the son of the undefeated, legend, the god walking among men, The Arena Champion Tito. My father in his premium fighter years earned a small fortune. Having money and fame he settled in PytFall. Bought a mansion that we lived a peaceful live. After his retirement from sands of the arena he opened a fighting school. As for me [WARRIOR/CASANOVA]. We lived this way for years when our financial problems started to show. Fathers school was taking more money than the fighters could earn in fights. So he announced his big comeback. He invested our last money in the upcoming event, also took some loans. On the day of the event the most unpredicted thing happened. My father went missing. The fight was called off and I was left with my father’s bills and debts. The next day the tax collector came to claim the debts. I didn’t have enough money to pay it all off so he confiscated the mansion and kicked me out on the street.
WAR: from earliest years I tried to fallow in my father’s footstep. As a baby I tried to pick my father’s shield that was to heavy for me back thane and imitate his movement while he was training. I had natural talent for fighting as the champions son and started to swing a sword early in life. In my late teenage years I started to train seriously for my Arena debut fight that would occur after I turn adult. Father approved of it and was proud of the way I choose in life.
CAS: from earliest years I wasn’t interested in fighting. When I was a kid and father was taking me to the arena to watch his fights my attention was distracted by bouncing breasts of screaming girls cheering for him. As a teenager and almost adult I used my strongly build body and my father fame to win over girls, that was the thing that my father was useful for me that time.
3. Father – trader. Made a lot from trading breath mints (who would guess!).
I have a really easy and enjoyable life as a merchants son. My father is one of the richest and influent people in the city of PytFall. He got to this status by trading breath mints. Who would knew there was so much gold in breath mints, right? As for me I was never interested in father businesses and trading. From our barely conversations that usually focus on his work, I only remember that he sometimes mentions his business partner name - Stan and that the business now is good. As for my daily routine. [WARRIOR/CASANOVA]. It all stopped when my father gone missing. Couple months ago, he took his caravan and went to make this big trade. At first it didn’t bother me a bit, it was just so typical for him to be gone for such long time. Months passed by when I was busy with my things till that feral Monday. As it occurred he took the breath mints for his last business trade on credit. Now the tax collector came to collect the debt with interests. I have lost everything. My home, servants and life style all gone! Who would thought that breath mint trade can be so expensive…
WAR: I get up early, before sunrise and go to the park to run. After that I usually eat breakfast with father if he is at home. In the afternoon I have my practice fights in the arena training grounds, where I usually eat lunch and stay to dawn watching fights. After coming home is going straight to bed for me.
CAS: I get up around lunch time. The house is empty like always. I eat, bath and prepare for the next wild night in my life. As for the wild night thing. I have some friends that we hang out with partying, drinking and looking for some fucking. My day ends in what the commoners calls “morning” when I’m coming back home. At that time I usually bump with my father that is heading out to town or an another business trip. We argue and both go our way.
4. Father – slacker like you. You where parasitizing on your granddads fortune.
I’m part of a rich family in PytFall. Born in this privilege state I never had to do anything myself. In our enormous mansion, always being surrounded by servants that did everything for us. It applies likewise for day and night services. We spend our days in city doing the things that we fell like. Be it visiting arena, taking a stroll in the park or selecting our new toys in the market. I mostly spend my time [WARRIOR/CASANOVA]. It all was really good for me till the judgment day. Waking up on a Monday afternoon to my favorite slave girl blowjob, I barely remembered the things that happened last night at the party. After satisfying me with her tongue skills I felt like having lunch in the garden. I put on my robe and walk down stairs, where in the great main hall the tax collector was waiting for me. He politely bowed and remind me that my father was behind with payments for last month and today was the deadline. I yawn lazily and led him towards the treasure room. It was empty! Not a single coin left! My father also was missing. Not being able to pay the debt the mansion and all belongings was confiscated.
WAR: with my private fencing instructor. She is really good not only with the sword if you get my flow. After the hard practice it is bathing time and heading out to town with my friends. We mainly cause trouble in clubs and pick up girls.
CAS: accompanied by ladies. If not I’m probably with my buddy in a club watching some strippers and selecting my companion for tonight. I like them young and never go for the same slut twice. I’m not bragging. I fucked so many that I lost count a long time ago. But I’m pretty sure that there were more lips on my dick then on my lips if you know what I mean.
Enriched history of PytFall. I tried to implement all the things you wanted. Hope You like it. (btw. i'm not a native english language user so there might be some grammar errors).
The day that the empire acknowledge PytFall as part of it had been knew as year 0 in the city history. For next couple of years the town of PytFall served the empire as front-end trading hub with surrounding barbarian encampments and smaller settlements but also as a minor source of exotic slaves. In year 22 the emperors 3rd army came and raised they main camp in the city vicinity. They use this camp as a foothold to raid, pillage and annex the so called barbaric lands to the empire. At that time city of PytFall grew with inflow of people from heart of the empire. Starting from the soldiers families, adventures, treasure hunters, slave traders but also merchants wanting to ensured citizens needs would be taken care of by selling them goods they were used to have in previous homes.
The campaign ended 12 years later, in spring of year 34 after the last mayor barbaric settlement had fallen. Army retreated 4 months later leaving a small garrison in PytFall. Also some soldiers have left they service and settled in the city with their families. The city was growing steadily, with numbers of citizens. The majoring good that had been exported was slaves and exotics on the other hand the sudden growth forced to constant import of food.
In the early spring of year 35, a slave rebellion have occurred. Vast in numbers, knowing that the imperial army was far away the slaves took they chance against their suppressors. Outnumbered, the military focused mainly on providing security to the citizens. Over 80% of the rebelled slaves had escaped into the wild land. The rest got caught or pacified as they tried to resist. In result of this event reign over the city fell in the military hands. Garrison had been doubled before autumn, food and water had been rationed to the citizens. Besides that, there were strict controls upon entering and leaving the city.
Two years later, at the end of summer there was another uprising. This time the citizens and slaves stud up against the military regime. Fighting took only two weeks and ended with assassination of the militia leader, rest of the soldiers were scattered. PytFall announced it independence as a city-state and left the empire.
However the Emperor had his plans for PytFall,. Early in the summer of year 41 the city was under siege by the 3rd and 4th imperial army leaded by the emperors 2nd son. Given the ultimatum “surrender or die”, the city gates opened the next day. Current leaders were executed and the citizens were putted under martial law. Strict rules such as forbidding gatherings of more than six people and police hour after the sunset. PytFall was once again part of the empire.
Under the new, strong rule, daily live in PytFall started to stabilized. Trade routes were established once again, but only for the chosen few merchant approved by the empire. The mayor change around the city was growing numbers of farms and fields providing food to the city. Being self-sufficient, import of food was no longer needed. Unfortunately the lack of slaves that could work on the fields and no barbarian settlements in near vicinity, forced to import slaves from other territories.
The next noticeable date in the city history is year 48 when the martial law had ended and the 4th army had withdraw. The city was divided in zones and build of the Grate Palace had started, in so called Golden Zone, reserved for nobility and people of influence. With this project, it was clear for all of the empire that PytFall will be one of the mayor cities in the future. Craftsmen and architects started to flow in to the city. New buildings in different styles, started to pop up all over the city. With growing numbers of people, the ruler implemented a new law. Volunteers and slaves where to be trained by the military into a town militia. The pay wasn’t very good so most of the force were selected slaves, but the officer post was filled only with free people. As to approve loyalty of the slaves, there were promised to be set free after ten years of service. Also this year the Imperial Tax Collector Office had been opened for business. This was the golden time for the city and its people. As for everybody had something to eat, a work place, a roof over their heads and a bed to sleep in at night.
But the golden age didn’t last long. In year 54, the emperors 2nd son had been assassinated is his manor in PytFall. Reign over the city was given to the emperors youngest son. Young, inexperienced, spoiled, lustful and quick-tempered character. His lifestyle and behavior was in total opposition to the previous ruler. Being used to live only in the Capitals Palace, surrounded by luxury and meek slaves, he impersonate himself as a walking god that every desire should be fulfilled immediately and without questioning. He was weak and indecisive ruler, announcing a law just to revoke it a month later or signing build permits for the same lot too two or three people. This state of affair gave a steady foothold in PytFall to organized groups, leaded by man that like to call themselves Crime Lords. At that time they mainly were a mercenary force that helped for a fee, but also did kidnapping, treated people, host illegal fights and brothels. His poorly maintaining also affected the town militia. At first he cut the militia founds and extended the ten years of servitude for freedom to twenty. This was the first step to his downfall. The second, was his attitude towards slaves and generally citizens. Several times he beat his slaves to death for minor mistakes. For example he ordered to execute a slave girl for not changing flowers in his room in the evening for fresh, or torturing some poor souls to death for making direct eye contact. Next one, that made the city into a powder keg, was his action when taking a stroll thru the city streets. In the bowing crowd he noticed a girl of his liking. She politely tried to rejected his offer of sucking him off even when he generously offered her a gold coin. Losing temper , he ordered his bodyguards to held her down and raped the poor girl in some dark alley. She happened to be the daughter of the richest merchant not only in PytFall, but in the empire. The last drop was totally removing point in the law, granting freedom for slaves serving in the militia, he argued his decision with this words: ”Slaves should be slaves, they don’t have the privilege of being free”.
In winter of year 63 the most bloodiest revolt engulfed the city. Well trained and equipped slaves raised their blades against the governor. For years they have been training in secret by the fellow slave brothers serving in the militia for this day. Also being financed by one rich figure outside the city walls and assisted by the Crime Lords helped a lot with bribing guards, city officials and smuggling weapons into the city. But this time not all the slaves rebelled. Those who was working in manors of wealthy merchants and nobles, helping in stores and workshops stood to protect the current state. Skirmishes torn the city apart for next two years. In the end the rebels won. Symbol of their triumph was the head of the emperors youngest son impaled on side of main road leading towards the empire capital. Afterwards the internal struggle for power between the Crime Lords weakened the rebels.
At beginning of year 69 the Emperor himself leaded his army on PytFall. City was the first stop of the emperors military campaign of acquiring new territories. The assault lasting three days ended in success. Not showing mercy all the rebels where cut down. People that was proofed guilty of helping in the uprising also was sentenced to death. But the Emperor also showed his good side. He granted freedom to slaves that stood against the rebels and those who helped the nobles in escaping the city. New rules where established. The most important was that slaves couldn’t never wield weapons and that the town militia, from now on would only be formed by free people. Week after conquering, the army marched on deeper into the wild lands.
Another calm era started for PytFall. City wasn’t rebuild to its previous state. Imperial architects put some changes in the previous projected. They added a large park and a fighting arena in the commoners district. The new project divided the city in three areas. The central one was the largest. It was the place around the old Grand Palace, where they planned to raise mansions and manors for the nobles and wealthy people. Also the Grand Palace was going to be renovated and expanded. The second largest area was the “commoner ring”. Where they plan to settle common people, shop owners, craftsmen and freed slaves. As well it would have the most stores and workshops in the city. The third and last was the slums. Place for beggars and homeless people. A true necessity in a large imperial town if you want to control the number of this people and prevent plagues.
The last dates worth mentioning in the city history is the death of the Emperor in winter of year 87, and finishing the expansion of the palace in year 96 that was rename into Central Palace.
Currently PytFall is the mayor trading city in the empire. Being something like a floodgate, all trading caravans coming from towns that where conquered by the previous Emperor have to go thru here when heading towards the heart of the empire. The city itself is full of life. Royalty, nobility, connections and power meets common people, poverty, slavery and desperation. They rub of each other inside the city walls, in one opinion creating an interesting cultural mix, as other may say an explosive mixture. It is the place to be!
I came with another opening for the game. It’s not a story, just a short prolog into to the city of PyTFall.
Code: [Select]Welcome to PyTFall!
Being a city on the outskirts of the empire, where most of the mayor trade routes go thru, made the city into a lively trading hub.
But for a lost soul this place is equally dangerous and deadly, without big difference on which side of the city walls it will be.
From the outside, surrounded by untamed wild lands full of beasts, bandits and undiscovered treasures, just waiting to be explored and seized.
However, the city itself from first sight appears to be prospering well, being full of richest and exotics.
Housing various races and people of different status, creating a cultural melting pot.
Tempting travelers with it carnal pleasures, easy coin for mercenaries and magic wielders.
But after a closer look, beyond palaces, mansions, merchant stalls, shops, bars and other entertainments you will notice that this picture is just a facade for only a few to enjoy.
The real city life goes in the shadows. Exploiting people of the slums, likewise slavery, trickeries, betrayals and bribes are the bloodstream of the city, being its foundation.
So how will your story end in the city of endless opportunities?
Will you end rich or with a blade in your back?
Once again; welcome in PyTFall!
Main heroines, huh?
To clear one thing.
? Define "clarify" please. Those things are pretty straight forward.
The girls meet was being remake – adding and deleting stuff from there will affect the possible actions. There was talk about bringing in dating system – another modification for potential quest lines(girl could make the MC to invite her for a date or the MC have to invite her to progress the story). The Exploration Guild – another piece to the puzzle. Having locations to raid, a Girl could ask to bring her, let’s say 50 purple berries from the woods = MC sends team to the forest, they bring the stuff. Or a fighting type girl would ask the MC for support in exploring some cave that she found (bonus new exploration terrain for the future added). Talk about adding ghetto and city guards. Another variation that could spice up the quest lines. There was also talk about new towns = hello escort missions and high jacking! Someone was making the slave training system for the game, another viable that could be used in a quest line. From the realtor, MC personal home = catching a thief girl – with potential options of talking with her, handling her over to the guard, send her to the dungeon for torturing or if the MC is slow and clumsy she would get away with the loot.
And for the text that I referred earlier was the long history of PyTFall but I’m glad that you posted the potential background stories for the MC (if them would be implemented, them also should somehow affect the stories).
I don't understand why you require knowing all of these things to do create new content. Noone really knows how all of that turns out in the end, we don't event know what brothels will look/function like in an year or two. It's the same issue as CW had. If you guys can't get passed that, we'll never have any new content from either of you :(I can't so that why I said that I wait (and participate in discussions about it) until it gets more clear (systemwise for quests or storywise for dialogues) at the beginning of this talk.
bout' that history... Isn't it lacking the Ethera bombardment, rifts, monsters, all the good stuff? :)
also... selecting a father's history means that "who the heck was really my father" kind of story is out of the question?
From the realtor, MC personal home = catching a thief girl – with potential options of talking with her, handling her over to the guard, send her to the dungeon for torturing or if the MC is slow and clumsy she would get away with the loot.Cool idea btw.
I can't so that why I said that I wait (and participate in discussions about it) until it gets more clear (systemwise for quests or storywise for dialogues) at the beginning of this talk.I agree that we don't have enough ideas to make city concept 100% clear (though it doesn't prevent us from making content like girls, items, mobs, explorations, etc).
Creating events/quests has been made as easy as it can possible be, there isn't much else left we can do as programmers at this pointYou can make as complex as possible at this point events, unique girlsmeets and quests with detailed comments.
*Girls personalities are loosely based on the shows/games they are from, any NPCs that come with them = same. We do not specify exactly how that works (as it is not required).We shouldn't enforce common origin here, it depends on what pack makers will write in girls descriptions. Even in wm there were both twins and characters that came from other worlds. Though a quick reference about guests from other worlds won't hurt.
I have a general idea for a short story for meeting TenTen (if you want I will try to make a story graph and post it here, gimme 24h) but without the mechanics mentioned above my moves are limitedBtw, as a writer, you could provide us stories for meetings and maybe small, simple personal quests for all existing unique characters. That's something I'm bad at.
GM Graphics updated (not properly tested yet).I don't like the font. A serif print letter typeface isn't suitable for navigation and doesn't really fit into the game either.
It does... it also sounds like a history lesson more than an introduction into the game. We should have find out what happend to the father quest (s). We might need to adjust the intro accordingly.Agreed. I'm all for a story and stuff, but - as a game designer - I can safely say that especially the intro shouldn't be loaded with historical things. Throw the player right into the action and make history lessons optional (for example by having a library in the city or something similar). In other words: Let the player decide how much he/she wants to know.
I can't so that why I said that I wait (and participate in discussions about it) until it gets more clear (systemwise for quests or storywise for dialogues) at the beginning of this talk.I think there is a conflict here (I'm glad Xela can't see my I-told-you-so-smirk right now ;D ).
Btw, as a writer, you could provide us stories for meetings and maybe small, simple personal quests for all existing unique characters. That's something I'm bad at.
You can make as complex as possible at this point events, unique girlsmeets and quests with detailed comments.
...
...
@ALLThe story is about that is older, but I suppose it got buried in the forum somewhere, even I can't find it now.
About the long introduction. I got a list from Xela what he wants to be in the story of PyTFall and I tried to squish all that I could into a logical chain of events. It was June/July when that text got created and at that time, there wasn’t a single mentioning about exploration guild and sending team to the wild. The only thing that was on the list that I didn’t include in detail was “the ever changing landscape around PytFall”, because I didn’t have to much to go about why it would change and how it would change.
I think it was something about that when the slaves were almost winning in their revolt, the slavers side got their hand on powerful artifact called Ethera, and use it to call forth a strong magical bombardment that completely wiped out all rebel encampments on the surface. That was the end of the revolt, but usage of such strong magic on large scale caused some shift (damage) in the magic field around the city and rifts (portals) from the other dimensions began to appear, throwing out strange creatures and items into nearby lands. (and forced changes to the society to face them like fighters guild followed)
??? why I didn't get that info then! This explanation brings a lot.
Thank You, Cherry for jogging your memory and sharing.
OK, so if not random, they should be chosen after the MC buildup.
Quoting other NPCs (Stan) is a nice touch as well. Maybe it can be expanded to some relevant event/quest later on.
The robbing thing is prolly too much for now, unless it doesn't carry any consequences.
===========================
1: She sells the Brothel buildings, soon she will also sell/rent apartments (maybe renting other buildings will be possible as well, that hasn't been decided). In a week or so I expect that I'd have time to code in a Fighter Guild (Exploration/Arena) and Master's Guild (some basic slave training), maybe more but I want to get those two straight first.
2: Usually a mature, pretty woman with large breasts. If you have other ideas, be my guest.
============================
Other plans:
1) I am thinking dividing the city in 3 parts (Ghetto, Main part and Elite). Some NPCs/Buildings/Events for each.
In fact I wanted the Ghetto to be governed by crimelords and instead of paying taxes, you'd pay them for protection. Maybe even something like virtual territory control like in WM. In Other two, you'd pay taxes for government protection and City Watch will keep an eye on things. I wanted there to be one really powerful family those "governs" the ghetto and smaller gangs that micromanage and fights for the right to gather "local tax". But it's too early for this...
2) Improve the BE a bit.
3) Maybe add a job to the brothels.
4) Add a decent, multiple ending story like to one of the unique girls, maybe with several characters involved.
==============>>>
Another thing, could you add some more info to the PyTFall's background. I wanted something to have something like:
1) City has suffered numerous slave revolts, after a particularly bloody one 20 - 30 years ago in which even some of the great masters have perished, slaves (who dominated Arena/Many guard duties with an exception of City Watch were forbidden from being tough combat, carry arms or participate in any kind of fights). Before entire battalions of slaves were trained here to be sold into other lands. Many of the captains of those battalions (once who sided with the masters) were freed and continue to serve them as free guards upkeeping the peace (mostly in City Watch (most of whom died in the rebellion) and private guard forces). There hasn't been an uprising ever since. (I'd like there to be an explanation for slaves not being able to fight anywhere. It took some effort to make it so.).
2) PyTFall is a major trading hub, making it a cultural melting pot (but you had something like that already).
3) Maybe also a bit about sex industry and that slaves cannot ascend past rank 3 (Zashiki-Mochi) meaning that they can never become Tsuke-Mawashi, (Courtesan) (Although it maybe better off being a part of some explanation of brothels similar to what we have for the Arena)... You decide.
4) Maybe a hint on the exploration of rich, ever changing landscapes surrounding the city (I don't know how to spin that one yet, maybe landscaped don't change but new stuff is constantly being pulled from somewhere). I wanted to spin this as some huge magic incident during the uprising initially...
5) Enslaving local people has been made very difficult by the government and most slaves are being people either caught in the expanse or imported from else where.
6) ---- Actually scratch 6, it's too early for Faith/Delegations stuff.
There are plenty of examples in the gameI hope you don't consider that old quest with Tifa as a good example. We have some quests, but they are not marked in the journal, so they are outdated. I don't think we have custom girlsmeets yet. Finally, you could code as example some perodic random event, like that one with box made by Klaus.
I hope you don't consider that old quest with Tifa as a good example. We have some quests, but they are not marked in the journal, so they are outdated. I don't think we have custom girlsmeets yet. Finally, you could code as example some perodic random event, like that one with box made by Klaus.
^Thanks, examples is what I need.
I also thought about simple events like in SM3 where some npcs randomly appear at MC's house and propose something in exchange for your time (in our case AP, if you don't refuse). I guess dice for them should be a part of next day, but I don't know what to do next because we don't have anything like that :D
Next, I have about 200 cool sprites in db that I found during my adventures at g.e-hentai. I believe that for the purpose of diversity in many events we should select a random sprite. How this can be achieved?
There is no auto-events in the Next Day. I need to think if we can add those without breaking stuff (we should be able to, before the next day executes. After night be a bit tricky but should work as well, I can't tell right off the bat).
register_event_in_label("strange_idol3", quest=event.quest, locations=["mainscreen"], trigger_type="auto", dice=100, max_runs=1, start_day=day+1)
I ended up using:Code: [Select]register_event_in_label("strange_idol3", quest=event.quest, locations=["mainscreen"], trigger_type="auto", dice=100, max_runs=1, start_day=day+1)
to make an event trigger the next time the user goes to the main screen after that day ends. It would trigger normally after the player closes the next day screen.
Also a bit off topic, but I needed to flesh out the jail for ST for escaping slaves. Would just be a custom action to check if any escaped slaves are there, but I needed to add the jail to the map and build its label and screen as well.
While running game code:
File "game/script.rpy", line 86, in script
python:
File "game/script.rpy", line 96, in <module>
rchar = load_random_characters()
File "game/library/functions.rpy", line 198, in load_random_characters
tagdb.tagmap[tags_dict[tag]].add(rp_path)
KeyError: u'sample'
Downloaded the new Ren'Py and the latest dev code, added the char and sub char folders but I'm getting this error:Code: [Select]While running game code:
File "game/script.rpy", line 86, in script
python:
File "game/script.rpy", line 96, in <module>
rchar = load_random_characters()
File "game/library/functions.rpy", line 198, in load_random_characters
tagdb.tagmap[tags_dict[tag]].add(rp_path)
KeyError: u'sample'
While running game code:
File "game/script.rpy", line 86, in script
python:
File "game/script.rpy", line 94, in <module>
crazy_chars = load_crazy_characters()
File "game/library/functions.rpy", line 144, in load_crazy_characters
if isinstance(filetag, basestring):
UnboundLocalError: local variable 'filetag' referenced before assignment
Btw. I never used any of crazys or wh girls for PyTFall before, so I’m probably lacking some file. :( I fallowed your instructions. After the game restart, I got hit with this error:Code: [Select]While running game code:
Btw. I never used any of crazys or wh girls for PyTFall before, so I’m probably lacking some file. :(
File "game/script.rpy", line 86, in script
python:
File "game/script.rpy", line 94, in <module>
crazy_chars = load_crazy_characters()
File "game/library/functions.rpy", line 144, in load_crazy_characters
if isinstance(filetag, basestring):
UnboundLocalError: local variable 'filetag' referenced before assignment
Where can i locate the up to date game for pytfall?
Gismo gave me solution.
Deleted Crazy Bleach from chars and the game works.
Just push small interface update:
- Progress bar now has a style
- Also new style for mainscreen, girlsmeets dropdown and action buttons
- Add background to all grilsmeets screens and frame for images
(http://s27.postimg.org/so8bjtnsv/2014_09_26_17_18_01.png) (http://postimg.org/image/so8bjtnsv/) (http://s27.postimg.org/dqzuitakf/2014_09_26_17_18_38.png) (http://postimg.org/image/dqzuitakf/)
(http://s14.postimg.org/6p84c6iql/2014_09_26_17_25_03.jpg) (http://postimg.org/image/6p84c6iql/)
I have a lot of sprites from VN rips, do you guys prefer to look for your own NPCs or it may be worth to upload them somewhere? I was thinking about shamelessly using resources from other games for some NPCs, at these characters have a lot of expressions so they're easy to work with (some girls even have close to 100 sprites).100 sprites are overkill for me, but generally more npcs are welcomed.
100 sprites are overkill for me, but generally more npcs are welcomed.Careful with that. You should at least ask the authors for permission.
Hi!Careful with that. You should at least ask the authors for permission.
The simple reason: You don't have to worry about in game characters created by users - the worst that can happen to you is that somebody wants you to take the links to the pack offline, but you can't be sued because it's technically not your content.
NPCs that are included in the game however are your content, therefore you are responsible for copyright or trademark infringements.
Have fun!
I think girlsmeets require too much AP. It's 1AP per line, you barely able to talk with one girl.
I'd rather have 1AP per girl and limited number of lines per meeting.
That would enable spamming, I'll think about what can be done here, maybe 1/3 of an AP or something...
Hi!
A time based system would solve this problem in a very elegant way, but that would mean some oh so despised code base changes. :-\
But seriously, introducing 1/3rd APs or a subsystem that maps one action point to three gm action points isn't much less effort, it's just a lot more dirty with guaranteed inflexibility.
Have fun!
Maybe something like a “meet action count”. Depending on the NPC mood, friendship lvl, general interest in MC the scale of possible interactions would vary from 4 to 10 (not too much)? And the whole meeting would "eat" only 1AP.
It's doable (with enough time invested, I cannot foresee any huge problems)Actually, it doesn't need much time investment. In fact, I have a pseudo-coded class to handle things with time instead of AP ready to go, I'll send you a PM.
This would make a lot of thing easier and harder at the same time :)The only thing that is getting more difficult is balance - but at the same time it is getting a lot better because of the flexibility.
Main argument against are backgrounds... which any player would expect to reflect time of day.And who said that the player is working during the night?
Need to take a look at the code when time permits. It's fairly difficult to tell what's best and what's possible, maybe we don't actually fraction the APs, some actions will take 1, some 0.5 and some 0.33. We wouldn't subtract APs directly, 1/3 would mean 2 actions for free and -1 AP on third or something like that.This actually brings up more problems than a time based approach (and in the long term it will be more work because it's more difficult to maintain).
Nah, if we decide to do this it will be after the next release and it should be a proper 24 hour day for night time jobs as well.And which player jobs can only be done at night? Also, which human being works for 24 hours a day? Don't get me wrong, I won't object a "proper" system, but a 24 hour time window for the player to act is simply unrealistic and therefore doesn't need to be possible.
It's not a bad idea, we'll decide post second alpha release, adapting the code then won't be any more difficult then it is now.Statements like these drive me crazy. You want to decide on a core feature after a release? And you're wrong, it will be more difficult. The longer you wait, the more deprecated stuff you will have to replace.
I don't know. Many games have time system, SM3 first comes to mind. But in fact time system disguises ap system there, APs=hours, and you can use a part of AP in case of small events.Basically, yes. But time is a more intuitive value than action points and I have never seen an action point system with 1440 AP per day (because in almost all of these systems action points equal minutes, not hours).
You could just multiply all the current AP by 3.
Player starts with 9, a normal action now costs 3. An action during a girl meet now only costs 1.
SM system would be less flexible then what we have now. I'll see what can be done with girlsmeets and interactions when time permits?I have no idea what the SM system looks like, but I don't know how what I propose can be less flexible than a flat AP system. Would you care to explain?
You could just multiply all the current AP by 3.
Player starts with 9, a normal action now costs 3. An action during a girl meet now only costs 1.
Too many jobs would have to be adjusted as well, a lot of things consume AP and only girlsmeets feel like an issue atm.That would actually be a very simple solution that isn't horribly unintuitive. Just add a compatibility method (old method calls new method with AP parameter * 3).
I have no idea what the SM system looks like, but I don't know how what I propose can be less flexible than a flat AP system. Would you care to explain?
Just add a compatibility method (old method calls new method with AP parameter * 3).
You could just multiply all the current AP by 3.
Player starts with 9, a normal action now costs 3. An action during a girl meet now only costs 1.
Prepared a test version of the mc-setup (start game) screen.
(http://s10.postimg.org/adbe3ktg5/2014_09_30_19_45_05.jpg) (http://postimg.org/image/adbe3ktg5/)
Prepared a test version of the mc-setup (start game) screen.I like everything but those two grey buttons.
And of course many areas don't have night pictures, but we can avoid it by forcing MC to sleep at night or visit only those areas that have night backgrounds.
I'd prefer Klaus solution or less valuable and more numerous APs.
more numerous APs.
Ok... so the way I see Klauses approach considering the code is setting an amount responses on per day bases for every girl (first encounter eats up 1AP regardless). After that amount is reached girls simply respond with something like: Lets talk again tomorrow/We're done for the day and etc.
Girl have a bad day: “Make it quick.” = only 2 actions.While that would be more realistic, I don't like it for gameplay reasons: It sounds too much like a snowball effect.
She have a good day: “Hello. Nice weather today, isn’t it?” = 4 to 6 actions (even on 1st meet)
She is hostile towards MC: “What do you want? Scum… = only 2 actions
She likes him: “Oh hi you!” = 3 to 4 actions.
She loves him: “Mhmm…. I hope we will spend the whole day together” = go wild give 10?
What I meant was that meeting a girl would take 1AP.Not sure about the moods, but I like the separate counter from AP. Something like -1AP, 3 interactions point at start, and then you can ask the girl for more time for another -1AP, +3 interactions with that girl.
The whole thing looks something like this: MC goes to town, looks around, see a girl that he like, selecting her from the given three would consume 1AP and on the dialog options (top, bottom or nowhere) a counter how many times she would speak with him. Speaking to her after a day or few would also consume 1AP to start the conversation.
For those unfamiliar with the term, it basically means that the more you get, the faster you will get it in the future. In this case it means that it would take a long while to get her to like/love you, but as soon as you do you can hire her after a single meeting.
Not sure about the moods, but I like the separate counter from AP. Something like -1AP, 3 interactions point at start, and then you can ask the girl for more time for another -1AP, +3 interactions with that girl.
I believe that we don't want hiring the girls to be that much disposition related (=no need for love) so girls joining as soon as they started to trust you a little or even right away in some cases may actually be the norm.
I do my best to work on the project these days, but I have stuff to do at work (for a change), so I have less time than usual.
I've got yours and CWs updates and pushed a prototype of simple "Girlsmeets Points" (AP * 3 proved to be harder to code in practice so we'll try this first) and Gismos request for replacing MC Pics choice viewport with arrows and pictures instead.About that MC creating screen... the battle_sprites we have are adjusted to look ok in arena where they are just resized and placed in space, but they look kinda off-scaled next to each other when fitted somewhere like in this case. (it was not so obvious in the previous look)
we can get rid of the empty spaces in those pictures themselves to make them look ok thereThis sounds like something that I can take care of. Could you explain what exactely you want to do with those sprites? Which "empty spaces" do you want to get rid of?
Hi!This sounds like something that I can take care of. Could you explain what exactely you want to do with those sprites? Which "empty spaces" do you want to get rid of?dunno how thats called so have a picture
I wonder what means that scale at girlsmeets screen.
...
...
Loading information about the sprites as you suggest would work but we have other priorities atm that seem more important to me. Except a Tayuya, this never actually bothered me personally...It bothered me a little, but I'm totally ok with the result of editing sprites to better match each other like I did it until now (it should be for all MC, arena and my girls). It just one pics per girl anyway.
So what we could use I guess is some scaling parameters to entry with the sprites (probably in girl xml or arena/mobs json) so we don't have to edit the pictures but still get the result. (like that the secong pic should be displayed 1.5 larger for the bodies to match in size)
By chance, You don't have the list of items that need descriptions?Not all, but I can use help with those in items_fg_ng_test.json that have it's description empty (not "WIP"). Nothing interesting there, it's mostly just a low-tier items to fill the droplist. (that's why I have trouble with it, what the hell I should write about something so common like fur coat?)
Girls without battle sprite just flee or surrender if there's a fight, I think it's ok solution.Good idea. Better than any other so far.
Portraits are easy to make by just clipping normal pics so more expressions should be available more often, doesn't need to be transparent and various outfits in themI agree. We still could show characters sprites during conversations, but portraits will handle emotions.
btw. I found a nice set of school outfits iconsI can easily make items from them if you don't have other ideas.
I also still wondering about unlocking images since that our first discussion about it...You mean better images with higher disposition or something?
You mean better images with higher disposition or something?Yes, something like that. I denied it earlier for dunno why now, but as another kind of reward for progression/events it may be a nice option.
Good idea. Better than any other so far.A character without the appropriate image not being able to do the associated action/job/whatever was suggested ages ago.
I agree. We still could show characters sprites during conversations, but portraits will handle emotions.And honestly, this should be the only case where the emotion tags are used. For everything else it's up to the character wether he/she likes the action or not and therefore the pack creator's problem if it doesn't fit in (he's the one that has to match traits and images).
...I'll take care of cropping transparent rows/columns from battle sprites then.
I also still wondering about unlocking images since that our first discussion about it...
You mean better images with higher disposition or something?Please not. The problem is to define "better" - and we really don't need more effort for tagging images.
Hi everyone!Yes, it is like that. I'm only not sure if it's also that case for fights that we start manually from events, like that one in date example.
A character without the appropriate image not being able to do the associated action/job/whatever was suggested ages ago.
I got the reply that this is already the case - have I been misinformed?
I'll take care of cropping transparent rows/columns from battle sprites then.??? Why? Nothing is wrong with current battle sprites if we don't want to change the system
Ah, I get it, that scale shows disposition level. I believe it supposed to be semi-hidden though, so maybe we should use it for mood or something.
...
...
---------------
I also still wondering about unlocking images since that our first discussion about it...
Good idea. Better than any other so far.
Hi everyone!
A character without the appropriate image not being able to do the associated action/job/whatever was suggested ages ago.
I got the reply that this is already the case - have I been misinformed?
And honestly, this should be the only case where the emotion tags are used. For everything else it's up to the character wether he/she likes the action or not and therefore the pack creator's problem if it doesn't fit in (he's the one that has to match traits and images).
I could add an option to select a square area in any image and save it as portrait... the UI for that would be somewhat tricky to implement though.
I'll take care of cropping transparent rows/columns from battle sprites then.
Please not. The problem is to define "better" - and we really don't need more effort for tagging images.
If you want to do something like this do it based on what's already there, e.g. allow/disallow sex types based on disposition (I guess hand-/footjob > titjob > blowjob > vaginal > anal would be a more or less natural order).
Have fun!
Hi everyone!
A character without the appropriate image not being able to do the associated action/job/whatever was suggested ages ago.
I got the reply that this is already the case - have I been misinformed?
And honestly, this should be the only case where the emotion tags are used. For everything else it's up to the character wether he/she likes the action or not and therefore the pack creator's problem if it doesn't fit in (he's the one that has to match traits and images).
I could add an option to select a square area in any image and save it as portrait... the UI for that would be somewhat tricky to implement though.
I'll take care of cropping transparent rows/columns from battle sprites then.
Please not. The problem is to define "better"
I was imagining it as adding tags like "1", "2", "3" to some images and then telling the game to add images "1" to the pool at some condition. Dunno if it actually can work that way, probably not :)
That's better left to GIMP/Photoshop or other image editing software. We need emotions and already using emotions at other places, this has been discussed already.It's not like it's a complex algorithm. I've already written it by now, I'll just add it to the list of things you can do when importing images.
Another thing better left to the modder? Less work for you as well :)
It's fun to have "unlockable" CG galleries... maybe without any rating at all? Simply one picture in the beginning and unlocking other gradually on levels/events/quests?Since the game has a CG gallery... why not unlock every picture there as soon as it's used once?
Since the game has a CG gallery... why not unlock every picture there as soon as it's used once?
That would add the desired unlockable feature while being 100% non-disruptive for the gameplay.
I suggested that a long time and and the above is exactly the reason Dark and CW overruled me (I think even wording is almost exactly the same) :D :D :D
It's fun to have "unlockable" CG galleries... maybe without any rating at all? Simply one picture in the beginning and unlocking other gradually on levels/events/quests?
Fur Coat:
Made from northern dears, thick hide. Guarantee protection from wind and cold. Perfect for traveling in snowy regions.
Darksome Trophy:
Acquired from a slain barbarian. It suppose to increase the bearers strength, but it wasn’t very useful to the previous owner.
Ice Shoes:
Made from never melting ice. Popular footwear for young girls looking for that special one. Caution: Easy to lose when running down stairs.
Viny-patterned Corset:
Piece of the wardrobe created solely to make the waist look thinner. Sewn from green linen and padded with silk. For better visual effect, broidered with slimming floral motive in the front. At top and bottom finished with white lace and decorated with small taffeta ribbons. Beautifully underlining the wearers breasts and hips.
Snow-knit Gown:
The materials origin is a trade secret. The gown itself is made from a really thin, almost pellucid fabric. Very carefully and neatly sewed together. If the girl wearing this gown isn’t shaking, you can be assured that she is hot more ways than one!
Leather Kilt:
Piece of skin covering your most important parts. Beware, in some cultures wearing this is an invitation for indecent acts between men!
Ice Daggers:
Wanting to be an ice-cold assassin isn’t enough. For those who want to show off their cool, this weapon is the perfect solution.
Icy Sword:
Big, firm, sharp piece of ice, shaped with magic to be used as a blade. Long term usage without wearing gloves can cause frostbites.
Icicle Staff:
Like the name says, it’s an Icicle. Made more firm and lighter with magic, it is used as a staff but also successfully as a walking cane.
Bone Knife:
Made from a chipped bone wrapped around with a piece of cloth for better grip. Really primitive, but still very effective.
Easiest as well but doing this "half way" isn't a good option. Either just unlock the whole thing from the start or unlock as rewards for the continued gameplay (leveling up) and quests/events.It's not a "half way option". Unlocking a scene after the player has seen it once is completely normal and widely appreciated. It's intuitive and encourages to try different things, so it promotes different styles of gameplay without forcing the player to decide for one.
We need to find something that could pass for a "generic" battle sprite. Like a fully armored woman without any features or some dark sprite that hides everything but a female silhouette and have battle_sprites default to that instead of profile.I keep hearing about generic battle sprites from everyone, but I have yet to see a decent one, or even just a one ::)
There is not reason we couldn't allow both sprites and portraits.There is, portraits are much easier to find/make :D
I suggested that a long time and and the above is exactly the reason Dark and CW overruled me (I think even wording is almost exactly the same)Yup. I personally have another proposition. There are pictures with semi nude characters that still cannot be classified as completely nude, ie without cloth or with striptease. They exist in profile and rest categories mostly. We could use them only with high enough disposition. I usually use undress tag for them.
What you suggest is either redundant (because you unlock images that you've seen any amount of times before) or disruptive (because images are reserved for gallery purposes, meaning that they aren't used for the game).
I keep hearing about generic battle sprites from everyone, but I have yet to see a decent one, or even just a one ::)
There is, portraits are much easier to find/make :D
Yup. I personally have another proposition. There are pictures with semi nude characters that still cannot be classified as completely nude, ie without cloth or with striptease. They exist in profile and rest categories mostly. We could use them only with high enough disposition. I usually use undress tag for them.
Some options for armors I found in 10 min search.Are you really ready to use these sprites in the game right now? I'm not, because they look too ominous and heavily armored for generic ones. Maybe, just maybe we could use them for warriors only.
And sprites look a lot better. There is no reason why both cannot be allowed to give us and modders choices.Like I said, I think we should use neutral sprite + emotional portrait most of the time. While we shouldn't forbid other ways (why even bother?), in many cases because of differences in clothes and pictures quality sprites sets look unnatural.
Are you really ready to use these sprites in the game right now? I'm not, because they look too ominous and heavily armored for generic ones. Maybe, just maybe we could use them for warriors only.
Like I said, I think we should use neutral sprite + emotional portrait most of the time. While we shouldn't forbid other ways (why even bother?), in many cases because of differences in clothes and pictures quality sprites sets look unnatural.
It's the only thing that is really "engaging", hiding images before seen once is redundant, neither thing is disruptive as gameplay is not blocked. I haven't seen many of the images in CWs packs before.Your reluctance to implement easy and intuitive things while refusing to tackle more complex and flexible systems because the game "isn't nearly finished" and "everything can be improved later" never fails to astonish me.
Personally, I cannot see this working out well for several reasons without putting some serious effort into it...
Your reluctance to implement easy and intuitive things while refusing to tackle more complex and flexible systems because the game "isn't nearly finished" and "everything can be improved later" never fails to astonish me.
This clearly is a problem with tags and their usage and musn't be solved by simply unlocking the image eventually.
Look at the tags the image has - there must be one of two issues: Either some of the tags used are unnecessary because they are never used in the game, or they are never used because they are unnecessary, too detailed, not detailed enough or whatever.[/li][/list]
First of all, I wasn't talking about gameplay. Blocking gameplay because the image isn't unlocked would be insane.
I was talking about the user experience. Assuming that the above mentioned problem wasn't fixed, you're more or less actively hiding images from the user until he completes a certain amount of content and he doesn't have any way of accelerating that process.
In terms of only having an image unlocked after seen once, yes. More importantly though, it's a lot more intuitive, for two reasons:
First, it's always clear which image was unlocked in the gallery. Your approach requires random selection. It could of course be limited to certain tags, but at the end of the day it's still random.
Second, I'm not trying to hide any images - they are all potentially available from the start, completing the appropriate content - no RNG involved - will unlock them for the gallery.
Compare it to your approach:
As mentioned before, you want to unlock an image after it has been seen any amount of times. As soon as it was seen at least once, it is equally or more redundant than what I suggested. If it hasn't been seen by the player yet, it is completely disconnected from what he did to unlock it and therefore confusing and unintuitive and feels less rewarding. Why? Because "here, have an image unlocked that doesn't have to do anything with what you just did... you propably didn't want to have it because you just did something else but still here it is".
There is an option to make it feel more rewarding: Tie unlocks to tags. You can't tie them to content because packs and content are potentially user generated, so tags are the only option. However, that brings up the problem mentioned earlier (see point 1) and, propably more important for you, makes your approach almost equal to mine.
Your approach is the only encouraging one
Bullshit. Simple, plain bullshit.
In terms of motivation, my approach is almost the same as yours, but less random and more intuitive (I know I've said that a couple of times already). Claiming that your way is the only way is just wrong.
I misunderstood your approach a bit, this makes more sense.No big deal. :)
I understood your proposal as a suggestion that we keep stuff as it is, hide all images in the gallery and unlock them one by one as they randomly appear during the gameplay (we do this with Mobs at the moment). Since you propose introduction of gradual unlocking through tags/events and basically the same thing as I've suggested minus unlocking on level-ups.
This whole thing is easily beaten by adding new classes, events, locations, modules and quests to the gameplay at this stage of development. So coding in an image unlocking system right now is not something I'd invest time in until much later in the development. This is purely a theoretical discussion CW has started (and remained silent for a while now) :)Definitely. Keep up the good work.
I don't understand that unlocking thing. We don't use closed databases, you can look at pictures anytime you want right after downloading a pack. Semi nude pictures idea makes sense in terms of gameplay (more disposition = more trust = less clothes sometimes), but a gallery is something different.That is not the problem. We could just use a password-protected zip file or even a binary format (which could also speed up the loading process slightly because only one file section has to be loaded on the drive).
Mobs gallery could have some info about them at very least.
I don't understand that unlocking thing. We don't use closed databases, you can look at pictures anytime you want right after downloading a pack. Semi nude pictures idea makes sense in terms of gameplay (more disposition = more trust = less clothes sometimes), but a gallery is something different.
Mobs gallery could have some info about them at very least.
There is not reason we couldn't allow both sprites and portraits. We'll have to set up some ground rules for all kinds of sprites at some points. Maybe your approach where you can create json file to accompany sprites images when required is the best we can do atm. Simply an modifier to any height/width parameters set by the game will solve most issues, if not all (I gave this some thought and it should work and will be very easy to code for the game to do completely automatically).I gave it a second thought and for battle sprites it seems to be enough to just have two sizes of them, one default humanoid sized one and one large - for big monsters but also humans with long polearms could use that too, there's not a real need for precise scaling I guess. If the game could use the larger one in case there is not normal sprite, then I believe we could manage with just that.
Those fully qualify as generic female battle sprites. I'd use them without giving it a second thought before a better alternative presents itself. These things are best solved within wider community if we cannot find better option ourselves.
Done with the descriptions. Posting them for acceptance. Check them Cherry:
Yup. I personally have another proposition. There are pictures with semi nude characters that still cannot be classified as completely nude, ie without cloth or with striptease. They exist in profile and rest categories mostly. We could use them only with high enough disposition. I usually use undress tag for them.
I was only wondering about selecting (manually, it's not suitable for all girls so I don't believe it could be randomized with good result) some images to be not used for profile/jobs until reaching some condition in game, like rank 6, service>200, love status etc.You want to introduce conditions for certain images to reflect some kind of progress?
Or use the system to switch girl appearance image sets, like between schoolgirl and magical girl look for maho shoujo series or something like saber/sakura to saber alter/dark sakura in Fate, because that could have some event potential.I see what you want to do and it can be done with scripts that swap certain images. How would you want to use this, when do you change the set?
Agreed. I'll keep an eye out. You can also send me a fitting picture with existing background, editing it away is a task of minutes.
I had no luck either yet. I'm thinking about more common look, like hooded figure or something, because it doesn't seem very likely that a girl without battle sprite would be a warrior in a first place.
Living is right, that stuff is very simple to script but you'll have to do it manually unless new tags are introduced to make that more convinient... we'll add this to new tagging discussion when we get to it.Ok, thanks guys.
Hi!You want to introduce conditions for certain images to reflect some kind of progress?Dunno :D , it's probably too much based on personal options and each girl to generalize. In it's all stripped form it's just about making some pics unavailable from the start, whatever selected. If you don't like the idea right away (and I'm not 100% convinced myself) then I say to drop it and I wouldn't force it into my packs either (but I probably still try that set swap event someday).
Well... it's doable. But is it worth the effort? Looking at my own image pool I don't see many characters for which this could be used, mostly because there is no obvious progress.
minutes.
I see what you want to do and it can be done with scripts that swap certain images. How would you want to use this, when do you change the set?Not sure if I get the question, but let's see...
Ok, thanks guys.
I don't mind doing it manually, It's just I had no idea is it's something plausible or not as the game doesn't allow something like changing images files midgame yet so there's no reference.
python:
sakura_preskip = set([*images])
sakura_postskip = set([*images])
tagdb.tagmap["Sakura (girl id here, I think it's Sakura for her)"] = sakura_preskip
Thanks! I use most of them right away. Only for the ice boots/clothes I want to add something little more about how unpleasant they are, because these are a real deal, dropped from Ice girls at frozen cavernNo problem. As for the Ice Set, I saw your WIP, but was on a roll so I scribed something for them also.
It's just that I am so unconfident in writing normal stories, that I'm clinging to the visual stuff like theseIf you have an idea, or just outline of mayor points in the story line, throw me your thoughts and I will come up with couple of possible scenarios. Shit… even if you want to open two wormholes in the sky and throw in Gandams vs Dragonball Chars that finally got killed by Papa Smurf in Punisher style, I will make that happen. Just give me something to work with.
I was only wondering about selecting (manually, it's not suitable for all girls so I don't believe it could be randomized with good result) some images to be not used for profile/jobs until reaching some condition in game, like rank 6, service>200, love status etc.I don't wanna. I'd rather create more packs than make existing ones perfect. Maybe years later, after I'll make all packs I want :)
Or use the system to switch girl appearance image sets, like between schoolgirl and magical girl look for maho shoujo series or something like saber/sakura to saber alter/dark sakura in Fate, because that could have some event potential.Well, we have transformed tag iirc. I don't know how else we could make it generic enough for everyone.
If you have an idea, or just outline of mayor points in the story line, throw me your thoughts and I will come up with couple of possible scenarios.I do :)
I don't wanna. I'd rather create more packs than make existing ones perfect. Maybe years later, after I'll make all packs I want :)I bit different from me then, right now I'm actually coloring a manga page so I can create a girl I want that normally doesn't have enough sex images :D screw the effectiveness!
Well, we have transformed tag iirc. I don't know how else we could make it generic enough for everyone.Yup, I think I used that one in Sailor Moon packs (just on a whim that time). I good example of a tag that I have no clue whatsoever on what to use it for.
If you have an idea, or just outline of mayor points in the story line, throw me your thoughts and I will come up with couple of possible scenarios.Ok, I ask when I'm stuck with something.
We can automate this process if there is demand for this in the future.Let's see... allowing the user to define different image sets is simple, the question is how to handle them.
Hi!Let's see... allowing the user to define different image sets is simple, the question is how to handle them.
How accessible are the conditions for triggering a set switch from character scripts (an event system would be optimal)? Can you send me a sample script with a few possible triggers?
Have fun!
Python script in the game, nothing will be required from the tagger save the possible ("tag_set_1", ..., "tag_set_n") tags.... which is exactely what I'd like to avoid: Additional unnecessary tags. In order to design an alternative, I need to have some sample scripts.
Hi!... which is exactely what I'd like to avoid: Additional unnecessary tags. In order to design an alternative, I need to have some sample scripts.
My question stands.
Have fun!
change_tag_group(character, group)
expand_tag_group(character, group)
reduce_tag_group(character, group)
The trouble is to figure out how to determine the "group". Best option I could come up with was with tags which would allow a lot of freedom for modders. I doubt this will be used widely, tags relevant to this can be hidden in the tagger or on some separate tab...Determining the group isn't really the problem here, the real issue are the conditions under which each group is applied.
I want to remind you about our plans to make a nonweapon weapon type available to everyone and anywhere, including slaves. I'm gonna add those awesome Pinkutako's items strarting with dildo sword.
Hi!Determining the group isn't really the problem here, the real issue are the conditions under which each group is applied.
Essentially, I'd like to handle both directly from the tagger, but adding tags for groups and conditions (while possible) would be a mess because they don't work like normal tags. Instead, I could generate the relevant parts of the script automatically (or do something else that I can't come up with without knowing how your event system works).
That's why I requested a complete sample script with a condition to change the tag set.
Have fun!
I don't quite follow, conditions in this are not something predetermined, at any point during event/quest/storyline a content created will be able to use those lines and add/remove/change imagebase for any character. To me this should be done with tags as it allows full and complete control. I cannot even imagine how it can be done from tagger and not the game.I see your point, I guess I just misunderstood the original plan. I thought CW wanted to have trigger based set switches.
Hi!I see your point, I guess I just misunderstood the original plan. I thought CW wanted to have trigger based set switches.
As you explained it, he just wants to use special image groups in custom content, is that correct?
If it is, then using normal tags is fine, but as DarkTI suggested, the transformed tag can be used as long as there is no demand for multiple sets.
Have fun!
I want to remind you about our plans to make a nonweapon weapon type available to everyone and anywhere, including slaves. I'm gonna add those awesome Pinkutako's items strarting with dildo sword.
Noted, I'll try to make a new "TODO list before the next release" when I get a chance.
Planz: *(even Napoleon would be jealous )Truly a humble man!
Other:Unlocking unique weapons and armors at certain fame lvl. This was mentioned earlier, but wining slave girls also could be an option. Maybe a special event once every 90 days to win them in a tournament against other fighter. Or gaining access to extra places, unique explore locations. Also getting some unique girls to approach/have quest/hook up with the MC after he is famous enough or he kills a certain monster in the arena.
Better Arena integration into main game
Other:Reducing maybe not. If there will be new town(s), they can be relocated there. Also the number of brothels in Towns could be set at max 2-3.
Reduce Amount of Brothels + Put them on the map/Rename?
At my revision of code, slaves can equip all kinds of weapons just not participate in combat or train for it. Should I disable them equipping normal weapons and auto-equipping for combat because what you requested seems possible atm.I personally think that talking about slaves riots and wars and their serious consequences, and then just allowing slaves to walk around with dual lethal weapons breaks both the story and ambience.
Another thing, should we add not just "none-weapon" but something like service-tool/sex-tool/training-tool and etc? Would be potentially useful for auto-equip methods and "Broom" can count as a weapon by the same logic for service as Dildo Sword counts for sex?Yup. I guess we can rename weapon slots to left/right hand slots in gui, and use things like broom and stuff.
I am not going to code this until this is discussed a bit... maybe we should allow "small weapon" non weapon types as well, like feather duster for example...Of course we should. In fact, we already have several nonwapon type small weapons.
Putting them on map - I'm against that. The town maps are already small and packed with places to explore and meet girls.We need more maps. We won't be able to show everything at one map. Four maps, four quarters, I guess.
We need more maps. We won't be able to show everything at one map. Four maps, four quarter, I guess.
...
Added elements descriptions to the SF. Neutral is missing, "Air" you named "Wind" for some reason and Darkness/Light have the same descriptions. Also tooptip auto-expands (looks a bit odd) on descriptions this long so I can either use smaller fontsize or the existing descriptions need to be shrunk :)
Yeah, I prolly should have said "in locations", not "on map". Maybe even in the actions (some) or on pictures like we do with shops whenever possible.On location is sounding OK for me. I don’t know how we stand with the slums facilities concept, but I wanted to propose those:
We need more maps. We won't be able to show everything at one map. Four maps, four quarter, I guess.
I don't really understand what should these MC stories do in the game...
I don't know how many lines, maybe simply a smaller font. Keep it structured in the same way when you can so they look and feel similar.
Hold off on MC stories for now, Gismo is working on graphical and logical structure for the mc setup atm, I've seen some really good sketches and ideas, after that's finished you'll see what is needed.
I wonder what soft huntsman used to create worldmap in the new dragon game... might be an option for the general map.It's from another game Vampire Legend (https://www.facebook.com/games/vamplegend/?fbs=106) seen on DeviantART big clean version.
It's from another game Vampire Legend (https://www.facebook.com/games/vamplegend/?fbs=106) seen on DeviantART big clean version.
Current map goes to scrap? I thought that the map had potential.More like it will be a general city map, where you can select some places and quarters, and quarters should have their own maps. While I'd hate to overload gui with multiple maps, we cannot show everything at the current map, it's way too small.
Ok here is my work on MC-screen.Looks great, I have no objections.
Looks great, I have no objections.Except that the fonts make my eyes bleed.
The fonts are styled more than desirable and there are too many different fonts. The second problem is simple: Settle with a maximum of three fonts: Navigation elements, text and titles. Note that titles don't necessarily need an own font.
Navigation elements (e.g. the buttons on the talk panel) should have a simple, sans serif font without effects that is very easy to read. The spacing may be a bit wider than usual.
Titles (e.g. the buttons on the main page) should also be sans serif, but it may be ornamental. The spacing should be wider than usual, depending on the font. Lining numbers are desirable, effects are optional. Optionally, the navigation element font can be used if you do not want an ornamental font.
The font for text can be sans serif, but most prefer serif fonts for continuous texts. It should be proportional, the numbers may be non-lining and it musn't be ornamental. Normal spacing is preferable, no effects should be used.
Hi!Except that the fonts make my eyes bleed.
€dit: Aaaaand.... please no maps for things that don't need one. If it doesn't fit on the main map, a menu might be a better idea (not saying that it is, just hinting that it should be thought about).
Btw, that part with MC stats is supposed to be temporarily until we'll have several MC's with different backstories (=different stats). While we still could show them, we don't need to change them, so arrows are no longer needed.
(take a look when you get some free time, make sure to attack the mod before it attacks you or game'll crash)
I think i fix it.
http://www.pinkpetal.org/index.php?topic=3493.0
It seems nice for a minigame, though we probably should add card decks or something, so you have to find better cards to beat some opponents. Otherwise there won't be any progression = boring after some time.
Committed ST.2, gonna update the Slave Training thread again.
Stats can't be everything, because it will trivialize everything at high levels.Now deck don't exist. Cards creating in a start of new turn based on equipment and perks.
If you ever played Fallout NV, they have a cool card game there.
I you mean create card system like Final Fantasy 8, then i think i may create hybrid version - rare equipment add chance to special card appearing in field.That's an interesting idea. But how are you going to determine whether an item is rare or not? Do we need a new field for items, like cheap/common/good/rare/unique?
Some basic thoughts, don't have much time right now.
- When disposition hits some value, you can hire her. When it hits another value, you find out where does she live.
If you don't want to hire her, you don't need to. As long as disposition is high enough, you can visit her anytime (and do interactions there).
- Girlsmeets. It's basically pickuping in case of new girls, when you try to establish basic relationships. When you meet a girl that you already know well enough, it should be something middle between GM and interactions, I mean available options.
- Interactions. Include more personal options that cannot be used on the street. That includes sex stuff, I think, unless you hire a whore.
Clarify what do you mean by mood.
Competition? Do you mean AI opponents? I guess we cannot really handle it in the same way WM handles it, there are more things than just brothels in our game.
I mean we should finish current systems before starting a new, possibly big one :)
It's (once again) a question of if we should take slow going more realistic training and business buildup or faster gameplay (as we have now).My vote goes to fast and simple gameplay instead of realism.
If we look at your example, a doctor requires long education and practice, and an artist requires talent, something that cannot be obtained by anyone. Though anyone can learn to draw eventually, I guess.I thought the same until I had a semester drawing course. I was amazed to find out that it doesn't require talent at all (although it helps to have it) but rather lots of practice (even for those that have talent).
It not that big of a change + it's not a "new system"...Somehow it reminds me those ideas about making every girl truly unique with the help of unique preferences.
My vote goes to fast and simple gameplay instead of realism.
That really is kind of a marketing question though. Realistic, deep gameplay will allow spending more time with the game, but will make it more difficult, hence attract more hardcore players.
Simple, fast gameplay means faster successes and is generally easier to understand - which results in more casual players and more players overall.
There is no better option, but let's look at the game's target audience: Let's face it, it's a porn game. Do you really think many people care about playing a porn game "hardcore"?
I thought the same until I had a semester drawing course. I was amazed to find out that it doesn't require talent at all (although it helps to have it) but rather lots of practice (even for those that have talent).
Therefore, I suggest ignoring special talents and stick with what's already there.
Somehow it reminds me those ideas about making every girl truly unique with the help of unique preferences.
Maybe if you give us an example...
Example of what, my proposal is pretty clear. I have some specific ideas as well but you'll have to be clearer about what you'd like to know.How are you going to handle those valuable skills that make slaves so expensive and take a lot of time to train? Like I said, all skills need utility. By utility I mean more than higher price for slave btw. Just adding some skills that do nothing will make the game boring like SM3.
How are you going to handle those valuable skills that make slaves so expensive and take a lot of time to train? Like I said, all skills need utility. By utility I mean more than higher price for slave btw. Just adding some skills that do nothing will make the game boring like SM3.
So basically you have to add like 5-10 skills (flags/traits/whatever) and make them very useful for something. That's how I see it, at very least.
For example, we add a doctor flag that allows to heal other characters. We should code the healing process and a system to control it.
Then we add an artist flag that allows to create works of art. We should code items generation and a system to control it.
And so on.
Seems like a lot of coding.
...Two problems:
Ok this is my first attempt to draw a map. It isn't finished, simply laid out to collect your wishes and councils.I have a feeling that such a design would be better for quarter map rather than city. The city is supposed to be big enough to be independent, while at this map it seems quite small. Maybe it's just me.
I'll try to take a look at girlsmeets/interactions code to figure out how a common system can be created.About that, I wonder if we could try to increase the number of topics while making them generic with AA2 type of reactions (bad, normal, good, very good). AA2 calculates the outcome depending on personality and mood, we could do something like that with traits (and we have mood too).
I have a feeling that such a design would be better for quarter map rather than city. The city is supposed to be big enough to be independent, while at this map it seems quite small. Maybe it's just me.
Also I think it's too bright, you could try to make it a bit darker.
About that, I wonder if we could try to increase the number of topics while making them generic with AA2 type of reactions (bad, normal, good, very good). AA2 calculates the outcome depending on personality and mood, we could do something like that with traits (and we have mood too).
As for mood flags you mentioned, during girlsmeets it could be more or less random, I guess. And MC's actions could change it.
I didn't mean that we should use AA2 girls reactions (it's impossible actually, they are not general enough). However, when you try a topic, the game let you know how successful it was (like "you have a long, deep conversation").
In fact, we could use any topics like science, art, policy as long as we use such reactions, providing that we use a decent algorithm.
Also, I believe we should use more icons and less strings in interactions gui. Take a look at AA, they used there a lot.
After awhile player gets used to gui, so he doesn't even need strings to know where to click. Also we have tooltips, unlike AA, where you actually must remember what icons mean (and even that is not a big deal, surprisingly).
I feel like we're moving towards a sim game with an adult approach (that doesn't conveniently forget about matters like slavery/sex/war/death just because it's a game). There is a hentai edge, obviously, this is how it got started and we'll keep to that in our concepts/designs whenever it's sensible.I'd say, just like most of indie dev teams without funding, we make a game of our dreams in the first place, and its genre is secondary.
I have trouble with envisioning decent gameplay in a game of our size if a character can be trained to do anything in 50 - 100 days... Balancing that out to make it of any interest seems like a lot more work (if possible at all).If skills will be rare and actually useful, it's not a problem.
Btw, you might want to check brothels.im, they improved the game a lot. It even has a map now.
If skills will be rare and actually useful, it's not a problem.
We could in theory use icons for main interactions menu but I'd prolly like to avoid even that... in any case, here are some thoughts for a coherent interactions concept that doesn't have to be rewritten again and should answer to all our/modders future needs:
Been thinking about this and I have some ideas.
I shouldn't be too hard to modify the current actions code to work for girl interactions as well. It stores the actions under a key (currently the location name) so passing the full name of the girl to the system would work for handling access. As the systems doesn't (or shouldn't at least) save the actions and are rebuilt when the game is restarted / loaded it wouldn't take up too much space to have a unique set of actions for each girl. We could however just create 1 set of actions under "girlsmeet" or something and use it for everyone.
Adding dropdowns / submenus to the system wouldn't be hard, just create a custom action to specify what menu to show and pass that as the action's action.
Maybe add a new dict to girls that can be set in their xml/json files to add custom actions to the menu that can then call up girl-specific labels if authors desire. (If we use a global menu instead of char-specific this could still be used, just require a different function/label call to ensure it has everything needed).
As for skills, we could either:
1) create a new dict to ensure no overlap between the current stats and their new skills (maybe move sex/service/strip over as well). Then have the accessing function return 0 for any skill request that doesn't have a key. This would allow easier creation of skills and provides less clutter on the screen as only skills that have training are visible. Probably use a structure like {"skill": {"level": 0, "hidden": True, "talent": 1}}.
2) place the new skills into the current stat store and use the existing systems. Would force all skills to be visible on the girls screen. Would also need a new dict for talents however, something like {"skill": {"talent": 1, "hidden": True}}.
Look like a very basic Drag&Drop interface.Yup, and it looks very good. Instead of menus just drag and drop characters icons into rooms.
Yup, and it looks very good. Instead of menus just drag and drop characters icons into rooms.
Maybe add a new dict to girls that can be set in their xml/json files to add custom actions to the menu that can then call up girl-specific labels if authors desire. (If we use a global menu instead of char-specific this could still be used, just require a different function/label call to ensure it has everything needed).Noted.
As for skills, we could either:
1) create a new dict to ensure no overlap between the current stats and their new skills (maybe move sex/service/strip over as well). Then have the accessing function return 0 for any skill request that doesn't have a key. This would allow easier creation of skills and provides less clutter on the screen as only skills that have training are visible. Probably use a structure like {"skill": {"level": 0, "hidden": True, "talent": 1}}.
2) place the new skills into the current stat store and use the existing systems. Would force all skills to be visible on the girls screen. Would also need a new dict for talents however, something like {"skill": {"talent": 1, "hidden": True}}.
And less so if you're planning to have a range of 2 - 50/60 rooms in the building.This.
What would we an advantage of having girls specific access? It's prolly better handled with flags and buttons (actions) conditions.
This.
Drag and drop isn't necessarily a bad idea, but doing it per room is. Do it per job instead (multiple characters doing the same job must of course be represented by the UI).
Yup, and it looks very good. Instead of menus just drag and drop characters icons into rooms.
I know one of the girls currently made (probably outdated thought) came with their own rpy file with custom events in. Giving an author a way of adding custom interactions to the menu easily would allow them to customise their character further. It could probably be handled solely with events and quests instead, but it wouldn't be too hard to add.
We have a working Drag&Drop interface in the FG (PyTom spent a lot of time fixing bad code in Ren'Py that our interface uncovered) and as of 6.18 it should be working well. I just can't see Drag&Drop in brothels...It can work, but it's not a must-have.
There are two ways that a modder can overwrite default girlsmeets (future interactions) already. One is creating a label with the same name as an interaction adding _girl.id to it and another having specific name for a label that will completely override the entire girlsmeets. Allowing to add options is a nice touch but since it can be done through eval(), creating something special seems like an overkill.I think you didn't get the point. From what I understood, Thewlis wants pack creators to be able to add custom dialog options with custom replies without modding the game, but through the girl's configuration instead.
pytfall.world_actions.location("city_beach")
pytfall.world_actions.menu("relax", "Relax")
pytfall.world_actions.add(("relax", "sunbathe"), "Sunbathe", "sunbathe_event")
pytfall.world_actions.add(("relax", "swim"), "Swim", "swim_event")
pytfall.world_actions.meet_girls()
pytfall.world_actions.look_around()
pytfall.world_actions.finish()
condition="chr.fullname == \"Sakura Haruno\""
condition=GlobalFlagCheck("visited_sm")
condition=17
condition=["True", "7", "lol"]
Also, how the hell do you use spoilers on here?You can't. In case of pictures many services provide an option to show a smaller copy instead of the whole picture.
...
I never mentioned brothels ::)
I like how every room there has its own small menu with options to rebuild it. Also there are rooms occupied with garbage, and you have to remove it for a start.
This type of micromanagement would be too much for huge, multiple buildings like brothels anyway, but not for small, single ones. Characters pictures inside rooms frames are intuitive and illustrative.
Also I pushed the new Building/Job changes. I tested them and everything seemed to be working properly, but I can't promise that I got every possible combination of if statements so be prepared for errors in next_day.
I have some doubts concerning social status as a part of life simulation system.
If we allow girls to freely upgrade stats, earn money, rise social status and improve life conditions, then eventually every girl will be a rich aristocrat or something.
It definitely is at odds with what we see irl.
So either we set strict limits, like any extra money just disappear if social status is not high enough, stats cannot be rised more than, let's say, 50 per social level, etc.
Or we create invisible force majeure events that from time to time "nerf" girls randomly.
Nah, it only solves money problem. We should do something about stats and possibly items (to avoid cluttered inventories).
Pardon me for trying to make a more clear concept. I should have known that such things are not welcomed in the project.
life simulation systemOh god. Please keep in mind you're creating a game here.
This is one system that doesn't seem complex to me, just slow stats/money growth with a sprinkle of auto-buying items that is easy to control. Very little revolves around it and it exists to create an illusion of live city and set some flags for girls to improve girlsmeets.DarkTI is talking about a valid problem that you should consider before implementing the system. And it is not just a balance problem.
Here one more attempt to create the map.
(http://s18.postimg.org/t16doww8l/humans14.jpg) (http://postimg.org/image/t16doww8l/)
Let me try to explain: There are two scenarios.
Why is there no scenario where we get a simple, linear system that lies overwhelmingly outside of players influence just right without any fuss?Because a linear system is the worst thing you can do. It doesn't matter how you balance it, it will always feel wierd either for players that don't play much or for those that do.
I or Thewlis will code some simple variant of this system. If there are problems with it, we'll handle it afterwardsRight. Ignore potential problems, write code, see problems, write more code, fix problems, rewrite code, etc.
If there are specific ideas/requests, lets hear them. General suggestions on how to solve phantom issues with a system that is seemingly simple in a game where we have created over 50k lines of code and content together sounds weird to me.Except that it's not a phantom issue.
...
Social status? Do you mean that "rank" in game for prostitutes?
Isn't that solved from the start by that refusing customers+lowering reputation system? There was already someone in alpha who almost ruined themself by promoting girls too fast, because there were simply not enough customers for many of them working at the same time.
...The amount of ignorance in this post is driving me insane. I think I should just stop commenting here.
PS: I've disabled the annoying caste matching stuff in one of the Alphas patches :)It was sure annoying with all those messages that time, but not allowing brothel to run with only high rank girls had some gameplay management potential.
I know that the brothels and slaves are legal in PytFall, but it is really to such extend that "real" nobles should be bothered by some rich prostitutes/adventurers?A city that accepts the first should definitely be liberal enough to accept the second - so I personally think that the social status shouldn't restrict the profession at all.
Hi!A city that accepts the first should definitely be liberal enough to accept the second - so I personally think that the social status shouldn't restrict the profession at all.Seems valid :) I personally doesn't really have an option about this social thing... but more money sinks are always good I guess
Have fun!
The amount of ignorance in this post is driving me insane. I think I should just stop commenting here.
- You're only looking at projects that have failed and make clear concepts responsible for their failure. They were all developed by humans, maybe that was the problem. They were all developed on a computer, maybe that's what made them fail. They all used a keyboard to write the code, maybe they shouldn't have.
Get the point? Your argument is bullshit. Look at projects that have succeeded and ask if they used mature concepts or made up everything on the get go.
- Your "adaption" consists of doing unnecessary work because you're unable to think ahead. There are lots of people here that are willing to help you with the concepts, yet you refuse to think about anything in advance.
- You're telling me that you saved time by sometimes "rewriting the whole thing"? Tell that your grandma, not an experienced programmer. You have countless examples to back up your failure at planning? Examples of how you wasted time already?
Your argument here is basically this: "We don't plan too much because we'll have to react to later changes anyway."
What you don't understand: You could avoid having to react to changes if you would try to see these changes in advance. That's what concepts are all about.
- There is an obvious problem with the discussed system that you just ignore. We do not need to see it in the game, we already know that this problem will be there.
It was sure annoying with all those messages that time, but not allowing brothel to run with only high rank girls had some gameplay management potential.
I know that the brothels and slaves are legal in PytFall, but it is really to such extend that "real" nobles should be bothered by some rich prostitutes/adventurers?
A city that accepts the first should definitely be liberal enough to accept the second - so I personally think that the social status shouldn't restrict the profession at all.
btw. I looked for the room pictures in bg folders, there seems to be a awful lot of rich mansion rooms, some normal houses, but I wasn't able to find anything for poor girls, like a shack or something...
You don't think noblemen would mind a whore of any kind to hold the same social rank as them?You're implying that being a prostitute is a terrible thing. But the same noblemen that think so accept prostitution as a normal business? Doesn't make much sense.
You claim my statement's "ignorance" but yours are full of sh!t for a reason I've stated several times already:
you're wrong because I've seen too many proves of the contrary and experienced the same myself
Load of cr@p.
I don't understand why you can't...Well, I guess my words didn't make you reconsider your point of view at all.
I should have known that such things are not welcomed in the project.Yes. Stupid me trying to make a difference...
You're implying that being a prostitute is a terrible thing. But the same noblemen that think so accept prostitution as a normal business? Doesn't make much sense.
Well, I guess my words didn't make you reconsider your point of view at all.
Since you're having so much trouble believing me, try these:Just a few recommendations. If you don't believe literature either, I can't help you.
- Ian Sommerville - Software Engineerung (currently 9th edition, I've read the 8th)
- Hans van Vliet - Software Engineering: Principles and Practice (3rd edition)
- Grady Booch - Object-Oriented Analysis and Design with Applications (3rd edition)
- Tracy Fullerton - Game Design Workshop (2nd edition) (I have to admit that I didn't read this one, but it was recommended to me several times)
Sys1
==============================================
Sys2
Push small update.Regarding equipment screen gui, most of all we need a decent equipment doll. Many games have it, and it looks good there. Probably different ones for male and female characters.
- I added an Imperial set of armor + experimental frame for items in hero profile
Can we say no to both systems (at least for now)?Remember what I asked you in one of my last PMs? You don't have to keep us from discussing more complex concepts just because you don't want to implement them at the moment.
3) This will be weird unless this is checked with similar jobs that girls do for the player, another part of World Simulation (some unified balance).Why? Perhaps the character agrees to be hired by the player exactely because she/he doesn't like his/her old job.
- 2 - 3 levels of dwelling bound to those jobs (could be two dwellings per job for example).The same job can often have very different wages at different places.
- Auto-buy function to be run for for all free girls even outside of mcs employment (we may already have that).Did you think about splitting private and work equipment? Most items are influencing stats, randomly changing those would be somewhat annoying, so what the character wears on the job could/should be considered a working uniform.
- Fixed amount of cash to be paid on weekly basis based on the job (perhaps to be further modified through stats).And here comes the problem that DarkTI and me have been talking about.
- Having a slow stat growth. **We should prolly also set up starting cash so they can run some initial form of auto-buy routine for girls with jobs.
Simple balance to all of this, girls are not paid their wages, instead they just get some specified amount of cash based off their job. Slow stats growth as well (+0/1 per 2 weeks for general stats and +1/3 for occupational stats and 500 adjusted exp).
This will allow us to build up on content today with a system that we can easily expand and do not require balancing out atm.I honestly don't see how you can easily expand that system without rewriting it. Could you give an example?
...Definitely sounds interesting - I personally would prefer the first option, mostly because it's easier to implement, more intuitive for the player and the social class could be used for other purposes as well.
Regarding equipment screen gui, most of all we need a decent equipment doll. Many games have it, and it looks good there. Probably different ones for male and female characters.I'll look what is possible to make with this.
The same job can often have very different wages at different places.Yup. I'll see what I can do to make it realistic.
More preferrable would be to create general houses with a price and assign pricing ranges for specific jobs.
Did you think about splitting private and work equipment? Most items are influencing stats, randomly changing those would be somewhat annoying, so what the character wears on the job could/should be considered a working uniform.We don't have items that were created not for a job, I'm afraid. I guess it makes sense, for example, for warriors to wear armor at work and wear dress at free time, but that probably will be unnoticed by players. You don't see equipment screen all the time, and pictures are not connected to it too.
What happens after day 50? Or 500? Or 5000? All characters in town have all stats maxed out? That's ridiculous.Indeed. Xela, you suggested longer slave training, ie longer game. So there will be plenty of time to max out stats for everyone without means to prevent it.
And no, "slow" stat growth is wrong as long as it's linear, no matter how slow it is. The slower you make it, the less relevant will the feature be and the less players will notice it so it becomes irrelevant.
What do we need right now:Hiring Whores:
- 2 - 3 job names sorted per occupation to be reflected in Interactions (and to be taken into account during hiring process)
What do we need right now:Whore/Stripper/Maid:
- 2 - 3 levels of dwelling bound to those jobs (could be two dwellings per job for example).
Yup. I'll see what I can do to make it realistic.
We don't have items that were created not for a job, I'm afraid. I guess it makes sense, for example, for warriors to wear armor at work and wear dress at free time, but that probably will be unnoticed by players. You don't see equipment screen all the time, and pictures are not connected to it too.
Indeed. Xela, you suggested longer slave training, ie longer game. So there will be plenty of time to max out stats for everyone without means to prevent it.
I honestly don't see how you can easily expand that system without rewriting it. Could you give an example?
Hiring Whores:
- Street whores (girls that work on their own, lurking the streets and bars looking for clients).
- Ex courtesan (her wealthy master/owned died, she looks for a way to earn, she could be more expensive and be more picky about clients).
- Whore at rivals place
Hiring Stripers:
- Street performer/Belly dancer/Ballet Dancer/circus gymnast (“Hey baby! Do you want to earn more with your smoking curves?” – something like this).
- Teacher from the dance class (why train two left feet girls when you could hire the teacher).
- Striper in rival place
Maids/Servants:
- Young maid that finished her internship and is looking for place to work
- Maid at a merchant/noble that works there but is looking for better offer or an experienced maid that was taking care of an elderly person that died.
- Unemployed girl that want to have a decent life and live by a moral code (she wont whore)
And the most obvious for all professions, broken girls that will do anything for gold.
Whore/Stripper/Maid:
- Room in hostel (several people in one room)
- Renting small apartment above bakery/blacksmith/other shit.
- Rent an apartment in a larger building
- Owning an apartment
- Own a house
Warrior/Security (more private because she have weapons):
- Renting a private room (in house, hostel, other place).
- Renting an apartment
- Small castle
And for all: living with family or boyfriend.
About renting; visiting a girl that is renting could trigger an event in meeting her roommate/sister/mother/neighbor.
Girls are already auto-buying (limited, based mostly off traits) and auto-equipping items (fairly well thought through) based on task they preform. This is one line of code in custom scripts by the way.Hm? If you want to code two types of inventory, for work and for free time, I'm not going to stop you. I just don't think that it will be useful.
Renting/Ownership we're not going to bother with atm.
*Boyfriend == more complex Interactions content
*roommate/sister/mother/neighbor + boyfriend right now == conflicts with a possible relationship system we talked about for the future.
Hm? If you want to code two types of inventory, for work and for free time, I'm not going to stop you. I just don't think that it will be useful.
@renting/ownership: I was thinking more like a general response in dialog with the girl then a whole system of ownership. Something like this:
MC: Where do you live?
Girl: I live at… I rent a room at… I have my place… I live with my mommy…
Better place = more money spend by the girl to keep it
@roommate/and all the others – something like a normal girl meet place. Being at her apartment the player could pick who he wants to talk with.
Btw. An idea just hit me, an all girl boarding school. Think more about it or let it sink?
The menu still sits at the bottom but I can move it up to align with the rest if we want. Slight changes to the GirlsMeet class but nothing major. Should be pushed in the next couple of days unless we want changes.It doesn't need to be centered, but please put the disposition bar and the interaction buttons on one side. After all, you don't want to feel like watching a tennis game while interacting with characters.
If the logic behind the setup is working, we'll start thinking about best way to unify girlsmeets and interaction into new Interactions logic (Adjusted Girlsmeets class I expect).That shouldn't be too hard. Biggest change really would be how the interaction screen looks, unless you want to keep the current style. If you want to add a training version of it perhaps have the GM class hold a variable for which actions set to use, say "girlsmeet", "interaction" and "training". Then you could use the same screen for all three.
I'd like all "personal" training and actions of the ST module to go through this setup in the future as well and only scheduled training during the next day to be handled in the training/school setup. This should work out great.How do you want to actually get to the 'training-interaction' screen though? I could add a button to the training screen that just says "Personal Training" or some such to take them there. Or just place a "Train" button into the interactions screen.
It doesn't need to be centered, but please put the disposition bar and the interaction buttons on one side. After all, you don't want to feel like watching a tennis game while interacting with characters.
That shouldn't be too hard. Biggest change really would be how the interaction screen looks, unless you want to keep the current style. If you want to add a training version of it perhaps have the GM class hold a variable for which actions set to use, say "girlsmeet", "interaction" and "training". Then you could use the same screen for all three.
How do you want to actually get to the 'training-interaction' screen though? I could add a button to the training screen that just says "Personal Training" or some such to take them there. Or just place a "Train" button into the interactions screen.
I've got a simple consolidation of GM and interactions working. Not much different, a call to pytfall.gm.start_int instead of start_gm and making the interactions call some GM functions instead of their own and everythings working so far. Gonna play with it a bit still.
(http://i.imgur.com/Zm648e1l.png)
Got the styles working. Turns out you can't dynamically set a style using a variable without straight up copying your code and splitting them with an if statement as renpy can't predict what to use and throws an error ::).
Moved things about on the screen to get the bar and controls on the same side. The menu floating in the middle looked weird.
Another small update.
- Hero profile screen visual changes.
> Done work on frames, bacground and generally over screen elements.
++ Equipment doll for the experiment.
(http://s15.postimg.org/6sau1hmmf/2014_10_24_17_49_55.png) (http://postimg.org/image/6sau1hmmf/) (http://s15.postimg.org/z3wdyj6iv/2014_10_24_17_50_22.png) (http://postimg.org/image/z3wdyj6iv/) (http://s15.postimg.org/kjappym6f/2014_10_24_17_51_18.png) (http://postimg.org/image/kjappym6f/)
Boarding school is a bit off games course I think. You have stuff to write, finish that first :) (There are plenty awesome ideas for content if you run out of tasks, in fact I am pretty sure that I can keep you busy 24/7 for several weeks :D )Stuff to write... stuff to write… <trying to remember>. The alignment rewrite or was there something of more burning matter that slipped my eyes?
Stuff to write... tuff to write… <trying to remember>. The alignment rewrite or was there something of more burning matter that slipped my eyes?
(after some R&R this weekend, will start this Monday)
- 2 - 3 job names sorted per occupation to be reflected in Interactions (and to be taken into account during hiring process)That means that backgrounds are tied to occupations. So every time we add a new occupation, we need 2-3 new decent rooms pictures. They are not unlimited, you know.
- 2 - 3 levels of dwelling bound to those jobs (could be two dwellings per job for example).
- background(s) for these dwellings if a girl want to invite mc to stay (this can actually be avoided if we just add an option for mc to invite a girl into his apartment (assuming he has one) but would be nice to have).
That means that backgrounds are tied to occupations. So every time we add a new occupation, we need 2-3 new decent rooms pictures. They are not unlimited, you know.
Btw we already have jobs json for quite a long time. I pushed rooms pictures, there are beggar, poor, decent and luxury levels. I guess there should be another level, royal or something, but it definitely should be scriped, rare and unusual cases, like elven queen for example.
Approach Phase:
Normal - Hey, What's up...
Aggressive - (Smack her on the butt) How are you doing good looking
Deceptive - Hey, do I know you from somewhere...
based on how the player answers the approach phase the girl will *based on traits*
put him into either the Stranger and Friendly sections.
Each section unlocks new options.
Stranger Phase (affection 1-25): color red
Chat - Interests, Hangouts, People
Submenu Interests: Money, Power, Clothes, Trips, Morality, Sex, Food, Drugs
Submenu Hangouts: Park, Resturant, Onsen, Book Store
Compliment - Hair, Body, Breasts, Butt, Face, Inteligence, Her work
(if you talk about something she likes you get a +5 to affection)
Friendly Phase (affection 25-50): color yellow
Date - Park, Beach, Restaurant, Onsen, Book Store
Hug
Give Gift - Money, Gift Item, Drink, Drugged Drink
(same as before only now giving her something and +10 affection (these options cost money except hugging which can only be done after you give her something))
(you can still use the options from the previous phase to get a +5 if you want)
(giving them a drugged drink will cause the girl to temporarily have a boost in
affection - if you kiss or have sex with her in this state she'll permanantly keep the boost in affection)<- need to budget action points/money for drinks
Girlfriend Phase (affection 50-75): color green
Kiss
Kiss submenu:
Sex
Sex submenu: Anal, Vaginal
Sex position submenu: Cowgirl, Doggy style, Missionary, Sixty-Nine
(same options from previous only these on top of them; +5 affection for each)
(after you have sex with a girl for the first time negative affection is no longer is an issue)(before this if you talked or gave her something she didn't like you'd get -5 affection)
Infatuation Phase (affection 75-100): color pink
Ask to become Brothel Girl
Ask to borrow money
Ask to introduce to friends/threesome (new girl starts out at girlfriend stage)
Slave Phase (affection 100): heart symbol
Will do anything you want loyalty 100 percent doesn't try to runaway, etc.
Color indication for disposition or something like that? Because showing numbers is too plain and straightforward.
Also, if we use AA type of reaction (bad, normsl, good, etc), we can use all those topics from submenus. Things like ask to borrow money and ask to introduce to friends/threesome are cool ideas too, actually.
LoL Way to stay focused! ;)
Alignment rewrite, better intro, events, mc start-up texts and bonuses. I think the alignments should come first, would be nice to finish and forget about that for a while...
LAST Q to the Dev team and all other that read this: Do you want any particular class to be created (Mushroom picker, no legged pirate)? Just give me a name and I will think of something. This is my week off, so I have some time to write this.Actually, yes. I thought about writing it myself, but if you have the time and want to do it, go ahead.
without a calculator."Calculator" embedded into game.
That's an interesting idea. But how are you going to determine whether an item is rare or not? Do we need a new field for items, like cheap/common/good/rare/unique?Maybe.
Pushed preliminary version of loot items. It broke the game though, so fix is needed.
Now, when our author and creator of game world run away i decide to use story from Kamidori Alchemy Meister (Serawi route suits perfectly) and Princess Waltz battle engine (because i don't know kamidori formulas) + some characters from that. And now i think how to seamless combine them. Battle engine almost complete, now i think about quest sustem realization.
Alignments rewrite:
FIRE: Wildest of the elements, depending on it wielders will, strength and skills. Varying from pleasant warm to source of unspeakable pain. All that just in glimpse of an eye. Used correctly can scorch every obstacle to ash, leaving only burned ground behind. In unskilled hands can be very dangerous to the person using it. This element have the upper hand against Air, but is countered by Water.
So, does the game use files in interactions folder now instead of screens for girlsmeets and stuff?
File "game/library/interactions/GM - proposition.rpy", line 214, in <module>
heroskillz += hero.charisma * 4
NameError: name 'heroskillz' is not defined
it seems that interaction_hire label can't find it's variable definitions anymore or somethingCode: [Select]File "game/library/interactions/GM - proposition.rpy", line 214, in <module>
it seems that interaction_hire label can't find it's variable definitions anymore or something
heroskillz += hero.charisma * 4
NameError: name 'heroskillz' is not defined
-----------
also, old interaction labels are changing profile image while GM labels don't. It was looking weird anyway so I suggest keeping just one stable image there too and use portraits for small mood changes instead.
team.leader.say("We are not looking for a fight outside of our league!")
team.leader.say("You seriously believe that you've got a chance?")
is there something that must be set to a character to say lines properly?if pytfall.world_actions.location("tavern_inside"):
pytfall.world_actions.add("brawl_join", "Join in!", Show("pyt_wip_screen"), condition=Condition.global_flags("tavern_entry_brawl", "==", day + hero.AP))
pytfall.world_actions.add("brawl_stay", "Stay", Show("pyt_wip_screen"), condition=Condition.global_flags("tavern_entry_brawl", "!=", day + hero.AP))
pytfall.world_actions.finish()
Somehow this doesn't work and it's displaying only "Stay" button even if there is a brawl happening. (but there is no content related to those buttons whatsoever so we can freely remove them if there is some problem...)is there something that must be set to a character to say lines properly?
And also, If I would like to display and try to change portrait picture during talks and interaction, what could be the best way to do that?
The post you are trying to quote either does not exist, was deleted, or is no longer viewable by you.
class Girl(PytCharacter):
# bla bla bla
def __setattr__(self, key, value):
if key in self.STATS:
if key == 'disposition':
# This is a temporary crutch:
if last_label.startswith("gm_"):
if key == "disposition":
value = value + hero.charisma / 2
it should be: if last_label.startswith("interactions_"):
Pushed some fixes for interactions lines. Let's see how our current system (all those elifs) will work first. If there will be complaints, then I'll try rts function everywhere.
What we need now is more lines for several topics. Not every topic has enough lines because we mostly took them from other games, and things like hold hands for example are quite rare. Maybe Klaus could write them, because I definitely can't.
I wonder what should I do next...
Damn CW keeps deleting his posts2slow4me 8)
Our current system should handle everything same as the old one, only the access code has changed, we're still using normal Ren'Py labels and script.I mean players reaction.
Code: [Select]if pytfall.world_actions.location("tavern_inside"):
Somehow this doesn't work and it's displaying only "Stay" button even if there is a brawl happening. (but there is no content related to those buttons whatsoever so we can freely remove them if there is some problem...)
pytfall.world_actions.add("brawl_join", "Join in!", Show("pyt_wip_screen"), condition=Condition.global_flags("tavern_entry_brawl", "==", day + hero.AP))
pytfall.world_actions.add("brawl_stay", "Stay", Show("pyt_wip_screen"), condition=Condition.global_flags("tavern_entry_brawl", "!=", day + hero.AP))
pytfall.world_actions.finish()
No, disposition is not being applied, we'll fix that later, code is here:!Thought so... disposition increases felt a bit slow somehow.
Thought so... disposition increases felt a bit slow somehow.
About stats: ...I can't think or anything to say here :) Do what you guys think it's best and then tell me how to update girls, mobs and items to work again and I'm fine with it.
The thing is, I never worked with game systems and I don't know how majority of stuff is calculated even now. When I was creating something with stats, I usually just putted in some numbers similar to the closest thing I could find.
So even if you change the whole thing overnight, I seriously doubt I would notice :)
Yeah, the day+hero.AP bit was being calculated when the actions were created then stayed like that. I've made it so conditions can now "calculate" the second operand as well as the first.Sorry to say, but after your last update some buttons groups like "praise" or "proposition" and few more disappeared from interactions
Tomorrow I will prolly have some time to enable girls capture in SE and fix some issues with the module (more or less wrapping it up for the release). If anyone wants something added there, let me know.Loot items. They don't have to replace gold (yet), but they should be droppable and sellable.
Loot items. They don't have to replace gold (yet), but they should be droppable and sellable.
Also, how are you going to set initial levels/stats for captured characters?
Shouldn't they be limited by team's average level or something?
MC background/start up bonuses [/b]– with the new stats remake (that I like), tell me how you want this to work. Should they be one time bonuses or can they also modify the growth of the MC stats?
For example, from the livingforever request of “spoiled brat” I thought that this background could be: a rotten, spoiled son of a Duke, that he hadn’t even wipe his own ass once his life time. His father having enough of his son, sends him off to start living on his own. Starting bonus 250 000 gold but all stats (min/max) 0/20 and the growth 1/1 for every level up.
Stuff that is reasonably easy to add:I like :)
*Gold
*Stats
*Items
*Max/Level Max (This is really powerful, be careful with it)
*Buildings/Shelter
*Girls (with "simple" conditioning)
*Experience (might not be a good idea)
*Relations (small starting disposition bonuses/penalties for girls (available at the start of the game for girlsmeets) (like for Warrior girls or Prostitutes or girls that have specific trait and etc))
*Prolly more but I can't think of anything atm.
I like :)
I see no reason why we should care about balancing starts, if someone want easy start with 250 000 gold, why not?
I'd like to see a hardcore start when you begin injured and robbed of everything with 0 gold!
Something like pack of gifts would be a great starting item for someone like me who want to use free girls from the start.
Permission to arena or being friendly with some NPC could be also an option (discount in shop perhaps?)
MC background/start up bonuses [/b]– with the new stats remake (that I like), tell me how you want this to work. Should they be one time bonuses or can they also modify the growth of the MC stats?
robbing thing is nice but it seems too severe :DC'moon, we already put a loads of RPG stuff in the game, starting with cleaning the blood of arena walls so you can earn for your first sword, what could be more heroic start? :) I'm thinking of adding event where you can beg the beggar girl to show you a place to sleep so you wound't die after a few days from loosing HP on each next day without accommodation :)
... Do we want stuff like this? I can code this in without too much fuss (this particular example) but it will take (some) time.
I don't know m8... this is something we need to discuss. Also keep in mind that you can write one sentence of bonuses that will require hundreds of lines of code :D
Stuff that is reasonably easy to add:
*Gold
*Stats
*Items
*Max/Level Max (This is really powerful, be careful with it)
*Buildings/Shelter
*Girls (with "simple" conditioning)
*Experience (might not be a good idea)
*Relations (small starting disposition bonuses/penalties for girls (available at the start of the game for girlsmeets) (like for Warrior girls or Prostitutes or girls that have specific trait and etc))
*Prolly more but I can't think of anything atm.
Before I forget, you need to pick icons for this stuff as well... also try to keep to Gismos setup, lets finish that first (it would already by an unreasonable amount of starts).
Do you have dropbox access? We have a lot of graphical resources there?
C'moon, we already put a loads of RPG stuff in the game, starting with cleaning the blood of arena walls so you can earn for your first sword, what could be more heroic start? :) I'm thinking of adding event where you can beg the beggar girl to show you a place to sleep so you wound't die after a few days from loosing HP on each next day without accommodation :)Love this idea! If you don’t have any ideas for the startup, here you go: shipwreck, escaped convict, previous slave, addict gambler after losing it all.
robbing thing is nice but it seems too severeWhat are you, casual? Git gud, scrub! :)
btw. most weapons and armors are too cheap right now, it's still very easy to just buy the best stuff from all shops right of the bat and kick almost everyone's ass in arena on first weak, earning thousands. Not sure where to start the balancing though.I'm not a big fan of huge sums out of nowhere. Prices were set on condition that you need at least about 10-15 gold/per day for food and more if you want a shelter of some kind. I'd rather reduce initial gold and income.
Question.
Will there be “pick your alignment” on creating the MC or all start with Neutral?
Can I give out renown/reputation as bonuses?
Will the MC stats will be responsible for the same things or some changes/new stats?
What do you thing about growth modifying?
Warriors would growth more in physical, Magician more with spiritual stats, some Merchants and similar classes higher charisma, Nobles more in reputation. Of course there would be crossovers like:
Noble Dueler – boost in reputation, agility and strength but charisma and toughest would be under an average growth rate.
Average Joe – nothing special about him. All stats growth at the same rate.
I was planning to throw in 4-6 subclasses for Gismos 4 mains. So it would be 16 at least. Also I was thinking about Misc class with some more crazy/funny approaches (don’t know Rogue Clown? And no legged pirate – I got hook up on this one xD)
Yeah I have access to the dropbox and will browse for potential icons. But my hands are full in upcoming weeks, having only Sundays off for myself and a next longer breather around X-mas-New year.
Yeah I have access to the dropbox and will browse for potential icons. But my hands are full in upcoming weeks, having only Sundays off for myself and a next longer breather around X-mas-New year.
mc_stories["Warrior"] = mc_stories["Merchant"]
mc_stories = {} # Main Dictionary
mc_stories["Merchant"] = {} # Merchant:
mc_stories["Merchant"]["header"] = "Your father was a great merchant"
mc_stories["Merchant"]["Caravan"] = "{font=fonts/rubius.ttf}\n Maybe he didn't have own shop, but his caravan provides the city all necessary goods. Luck was on his side, he amassed considerable wealth, grateful friends, but also powerful enemies.\n Anticipating trouble, he left you at home. And on this day, luck deserted him. Caravan was looted. All people were killed and the father was gone.\n {color=#1E90FF}({/color}{color=#FFD700}+15k gold{/color}{color=#1E90FF},{/color}{color=#8470FF} +Intelligence{/color}{color=#1E90FF},{/color}{color=#DEB887} +Constitution{/color}{color=#1E90FF},{/color}{color=#00FA9A} +Luck{/color}{color=#1E90FF}){/color}"
mc_stories["Merchant"]["choices"] = OrderedDict(Caravan="content/gfx/interface/images/wagon35.png",
Farm="content/gfx/interface/images/hay35.png",
Ranch="content/gfx/interface/images/ranch35.png",
Mine="content/gfx/interface/images/Mine37.png",
Shopkeeper="content/gfx/interface/images/shop36.png",
Smuggler="content/gfx/interface/images/smuggler35.png",
Shipmaster="content/gfx/interface/images/shipmaster35.png",
Moneychanger="content/gfx/interface/images/coin30.png")
mc_stories["Merchant"]["MC"] = {} # Merchant Family MC personal choices:
for key in mc_stories["Merchant"]["choices"]: # We create new dicts for all keys to avoid errors
mc_stories["Merchant"]["MC"][key] = {}
mc_stories["Merchant"]["MC"][key]["choices"] = OrderedDict()
mc_stories["Merchant"]["MC"]["Caravan"]["choices"] = OrderedDict(l="Defender",
l_img="content/gfx/interface/images/Warrior2.png",
l0="Sword",
l0_img="content/gfx/interface/images/sword1.bmp",
l1="Woman",
l1_img="content/gfx/interface/images/woman2.png",
l2="Money Bag",
l2_img="content/gfx/interface/images/money_bag3.png",
r="Caravan",
r_img="content/gfx/interface/images/caravan.png",
r0="Book",
r0_img="content/gfx/interface/images/book1.png",
r1="Boots",
r1_img="content/gfx/interface/images/boots1.png",
r2="Bag",
r2_img="content/gfx/interface/images/bag2.png")
mc_stories["Merchant"]["MC"]["Defender"] = {} # Sub sub choices, Main: Caravan (Could theoretically be anything), sub = Defender
mc_stories["Merchant"]["MC"]["Defender"]["header"] = "Defender of the caravan"
mc_stories["Merchant"]["MC"]["Defender"]["text"] = "Acting as a security guard at the father's caravan, you have gained some experience in the weapons handling. You become a little bit stronger and hardier {color=#1E90FF}({/color}{color=#E9967A}+Defence{/color}{color=#1E90FF},{/color}{color=#DEB887} + Constitution{/color}{color=#1E90FF}){/color}"
mc_stories["Merchant"]["MC"]["Defender"]["Sword"] = "You cut down many heads with your favourite sword 'Bettie' {color=#1E90FF}({/color}{color=#FFD700}+Sword{/color}{color=#1E90FF},{/color} {color=#CD5C5C}+Attack{/color}{color=#1E90FF}){/color}"
mc_stories["Warrior"] = {}
mc_stories["Warrior"]["choices"] = OrderedDict()
mc_stories["Warrior"]["MC"] = {}
mc_stories["Scholar"] = {}
mc_stories["Scholar"]["choices"] = OrderedDict()
mc_stories["Noble"] = {}
mc_stories["Noble"]["choices"] = OrderedDict()
I'm not a big fan of huge sums out of nowhere. Prices were set on condition that you need at least about 10-15 gold/per day for food and more if you want a shelter of some kind. I'd rather reduce initial gold and income.
I'm not a big fan of huge sums out of nowhere. Prices were set on condition that you need at least about 10-15 gold/per day for food and more if you want a shelter of some kind. I'd rather reduce initial gold and income.Arena income is just nuts, I just won 4k gold at lv one in a 1v1 dogfight with normal equip :) But that's aside, compared to normal job earnings, I think that prices of low/quality and common items are relatively fine, but as items gets better, the price should increase much more the it do now. More like quadratic progression. Compared to how much leveled girls earn, I thing we are too reserved in there.
Arena income is just nuts, I just won 4k gold at lv one in a 1v1 dogfight with normal equip :)
More like quadratic progression.
Something with the quality of Excalibur shouldn't cost less then a good house in my option :)
Sorry to say, but after your last update some buttons groups like "praise" or "proposition" and few more disappeared from interactions
Alright, I've got the system working again.Thanks!
LoL It really should (although I don't know the real stats of that sword).It's an easter egg from Soul Eater (not Fate/stay night or something). It really should cost that much, I guess.
I'm officially give up on finding a suitable background for a temple of time. I have some decent npcs for it though, so we could add an item (clocks, obviously) to summon them.Returned from a work trip )
Returned from a work trip )
I remember, you wanted the temple with clock for revival. I'll see what I can do about it.
It's not a priority... we have a lot of other stuff to do.It's not a minor thing either, unless you want permanent death.
Only thing with a clock I have is this:I hoped to find something more temple-ish, but it will work too if Gismo won't be able to find something.
I wanted to ask about church, do we have a plans for any? I have some nun-like girls I want to add so I was thinking about having a small event there. So the question is if we want one on main map or I should keep it just as a non accessible unimportant event BG.
A church... We have temple of time for revival, so maybe there could be kind characters and even orphans that you could recruit.It doesn't really matter for what I wanted :) I didn't think about religions at all yet, do we really want that stuff?
It rises new questions about religions and gods in the city though. I hope your nuns are ready to answer them :)
Do you have outside pic for that temple of time?Nope. If you have any, they are welcomed.
Should I update tags in whore jobs?There are some "noTags" conditions missing that wasn't transferred from old version, causing wrong images to be used (bdsm, mast, etc...)
I'll just do it, it's not like we will have better tags in a day or two...
Oh, my priestesses of time will be able to tell many things about their god :)
I also have ideas about revival penalties system, and why they exist. Because otherwise it will be too shady and superficial.
I believe church cannot exist without a god. And I bet your nuns don't wear time-related robes. So we have polytheism now.
Nope. If you have any, they are welcomed.
pytfall.ra.can_escape(girl, location, guards_if_not_from_location=None, girlmod_dict_for_events=None, traits_to_help_escape=None, traits_to_hinder_escape=["Restrained"], use_BE=True, simulate_or_enter_BE=True, be_kwargs=dict())
While running game code:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 37, in script
python:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 39, in <module>
result = ui.interact()
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 173, in execute
screen pyt_slave_shopping(store, tt_text, buy_button, buy_tt):
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 190, in execute
if store.girls_list:
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 192, in execute
frame:
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 195, in execute
side "c r":
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 196, in execute
viewport id "sm_vp_stats":
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 203, in execute
vbox:
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 206, in execute
frame:
File "game/library/screens/locations/pyt - screens - slavemarket.rpy", line 211, in execute
text (u"{font=fonts/rubius.ttf}{color=#000}{color=[crimson]}%s"%(store.girl.fullname)) align(0.5, 0.5)
AttributeError: 'NoneType' object has no attribute 'fullname'
A tough question. I like buttons on the left one more because they are more compact, but buttons on the right one are prettier.
Yes.
def get_image(self, act, girl, has=False, **kwargs):
"""
Gets the image for the variant.
act = The act.
girl = The girl.
has = Whether to return using the has_image or show function.
kwargs = Arguments to pass to the functions.
"""
if has: f = girl.has_image
else: f = girl.show
# ChW: I excluded some main tags that we dont want in current whore job
if self.tags:
if self.noTags: return f(*self.tags, exclude=self.noTags + ["bdsm", "mast", "group"], **kwargs)
else: return f(*self.tags, exclude=["bdsm", "mast", "group"], **kwargs)
else:
if self.noTags: return f(act, exclude=self.noTags + ["bdsm", "mast", "group"], **kwargs)
else: return f(act, exclude=["bdsm", "mast", "group"], **kwargs)
# Oral sex acts
PytWhoring("blowjob", sex_skill="blowjob",
variants=dict(deepthroat=("He shoved his cock all the way into her throat! \n",
"Deepthroat is definitely my style, thought the customer... \n"),
handjob="He told %s to give him a good handjob.\n",
footjob=PytWhoringVariant(("He asked her for a foodjob.\n",
"Footjob might be a weird fetish but that's what the customer wanted...\n"),
dice=80, tags="footjob"),
titsjob_big=PytWhoringVariant(("He went straight for her big boobs. \n", "Seeing her knockers, customer wanted notning else then to park his dick between them. \n",
"Lustfully gazing on your girl's burst, he asked for a titsjob. \n",
"He put his manhood between her big tits. \n",
"He showed his cock between %s's enormous breasts. \n"),
traits=["Big Boobs", "Abnormally Large Boobs"], tags=["titsjob"]),
titsjob_flat=PytWhoringVariant(( (7,"With a smirk on his face, customer asked for a titsjob. He was having fun from her vain effords. \n"),
"He placed his cock between her breasts, clearly enyoing her flat chest. \n",
"Even when knowing that her breasts are small, he wanted to be carresed by them. \n"),
dice=50, traits=["Small Boobs"], tags=["titsjob"]),
titsjob=PytWhoringVariant(("He asked for a titsjob. \n", "He let %s to carres him with her breasts. \n",
"He showed his cock between %s's tits. \n"),
noTraits=["Big Boobs", "Abnormally Large Boobs", "Small Boobs"], tags=["titsjob"]),
bukkake=PytWhoringVariant(("Customer wanted nothing else then to jerk himself in from of her and ejactuate on her face. \n",
"He wanked himself hard in effort to cover her with his cum. \n"),
dice=20, tags=["bukkake"]),
blowjob=PytWhoringVariant(("Client was in mood for some oral sex. \n",
"Client was in the mood for a blowjob. \n",
"He asked her to lick his dick. \n"),
noTags=["deepthroat", "handjob", "footjob", "titsjob", "bukkake"]),
_=("Client was in mood for some oral sex. \n",
"Client was in the mood for a blowjob. \n",
"He asked her to lick his dick. \n")
)
)
New code is a bit confusing but it's prolly here:Ok, I'm starting to get it now I guess.
Ok, I'm starting to get it now I guess.
It seems that the problem was that I overlooked that some of the texts are handled through different class that doesn't accept tags and I need to rewrite them into PytWhoringVariant first.
And I figured all of that out but for some reason:
I'm sorry, but an uncaught exception occurred.
I keep getting errors like this one when i try to look at prisoners. Also if there are no prisoners, the game locks with writing on a white frame that I cannot find how to close (prolly a called screen).
I am trying to style Interactions screen now :)
What needs to be done is to exclude ["bdsm", "mast", "group"] tags from the whole job.
Also, the game is not using "les" tag at all, so in case of finger_pussy we get any image with "finger pussy" like normal sex image.
I think it's because that the class takes first image tag from the name of act, and this is named in the file as "lesbian", not "les" like the tag. But just renaming the act caused whores to not have female customers anymore....
Right, the locking-on-a-white-frame was the slave market screen failing because there weren't any girls to look at. The action should have prevented you from accessing the screen entirely in this case, but was missing a bracket.
The error itself is because while the jail had girls in it, the current girl property was still null so it tried to access properties on a girl that didn't exist. I've changed the add_prisoner (and pytfall.ra.add) functions to automatically set girl to the first girl added if its None (and pytfall.ra.add has jail=True passed).
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 37, in script
python:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 42, in <module>
pytfall.ra.previous_index()
File "game/library/classes - training.rpy", line 2147, in previous_index
self.index = (self.index-1) % len(self.girls_list)
ZeroDivisionError: integer division or modulo by zero
The les/lesbian confusion has been fixed. I changed the PytWhoring name to les and changed the corresponding Customer act to les as well.Somehow it didn't help. I'm still getting strait sex images that just happen to have some description tags like anal dildo or caress tits displayed together with female customer text.
Somehow it didn't help. I'm still getting strait sex images that just happen to have some description tags like anal dildo or caress tits displayed together with female customer text.
Like if the job was only checking the second tag and no both tags together (les + variant)
Code: [Select]I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 37, in script
python:
File "game/library/screens/locations/pyt - screens - city_jail.rpy", line 42, in <module>
pytfall.ra.previous_index()
File "game/library/classes - training.rpy", line 2147, in previous_index
self.index = (self.index-1) % len(self.girls_list)
ZeroDivisionError: integer division or modulo by zero
It's working but throwing this error when trying to click the next girl button (with only one girl in jail). I'll try to handle the rest of the logic for this tomorrow, there should be no problems if the jail is working.
Somehow it didn't help. I'm still getting strait sex images that just happen to have some description tags like anal dildo or caress tits displayed together with female customer text.
Like if the job was only checking the second tag and no both tags together (les + variant)
I'd add that:
self.girls.remove(self.girl)
in finish_job method is not acceptable, most jobs are meant to be repeated until AP are exhausted. I tried removing it but it caused an infinite loop.
I don't get why jobs were rewritten, they seem to have become a lot less flexible. We'll fix all of that in time but that is the only rewrite that makes no sense to me, buildings and girlsmeets all became better and (a lot) more powerful, slavemarket screen reusable, schools had to be rewritten due to horrific code but jobs were tight, all at one place, worked like clockwork and were easy to expand... I can't figure out what we got out of all the work rewrite (must have) required.
I'll undo the changes I made that've caused these problems and we can look at clean up later.
I'd add that:Aside of prostitutes always have only one customer now, I'm not having any service girls working at the bar. They just clean the building to no end, and when one girl manage to get the dirt to zero, next service girl just have it's job text empty.
self.girls.remove(self.girl)
in finish_job method is not acceptable, most jobs are meant to be repeated until AP are exhausted. I tried removing it but it caused an infinite loop.
If theres only 1 girl, then the index would be 0, so its complaining about getting -1 / 1. An if statement checking for a length of > 1 to do anything would fix it.
Aside of prostitutes always have only one customer now, I'm not having any service girls working at the bar. They just clean the building to no end, and when one girl manage to get the dirt to zero, next service girl just have it's job text empty.
Although I've got to ask, is there an important reason, asside from standardising it with normal screen syntax) that the location_actions positioning arguments were renamed? 'Cause using align doesn't work with submenus as the whole screen will be moved more and more to right with everyone opened.
align (0.95, 0.95)
==
pos (0.95, 0.95)
anchor (0.95, 0.95)
The issue is that as the action screen gets wider when sub menus open up, the x anchor ends up moving further inwards as 100*0.05 == 5, but 200*0.05 = 10. It was only really noticeable when I was testing with the maximum number of sub menus as it became more and more pronounced.How do you plan to add girls to the locations?
Right now, it say :"girls": {"Angel": 100} in the cursed forest, but players may not have a girl with that ID in their games, so is there another way?
---------------
- merged my loose item file with others + small stuff
I suppose time related characters like Sakuya from touhou project can be met near the temple of time. So we probably need names and meeting code for all freely accessible locations, unless it easier to handle via custom meeting scripts.
We just need icons for both of them on the city map.
Cherry, if you don't want to create a church already, I can do it later too.I myself will not be creating church as a location where you can go to, I was just thinking about using it as a bg in some character related event, no idea what gameplay function could be there.
I already created one location without thinking (tavern), and that just turned to be a waste of time, because I don't have any sensible content for player to do there.
--------------------------
I'm thinking about adding some simple events to arena "look around" where you MC will just watch some warriors training for occasional bit of experience. But I can't decide about the visuals at all, any ideas?
It seems that the current dialogue font doesn't support some of the symbols we have in interactions like ♪ or ☆, that were displayed fine earlier. (or whatever the case is, it's just displaying ? instead)
Our texts require Unicode support. I don't remember when this started, so I'm not sure where is the problem.
Still no medieval looking font :(What do you define as medieval? I chose a serif font with varying line width to make it look archaic, but there's no way to do much more than that without sacrificing readability.
http://www.pickafont.com/fonts/Medieval.html (http://www.pickafont.com/fonts/Medieval.html)I see.
Perhaps Ren'Py just doesn't like OTF, try the TTF version from Google Fonts (http://www.google.com/fonts/download?kit=Vos0xF1dEQLAYGFVWPAfcofD-WQWLbF4rYwcBGowFYY).
Have fun!
Perhaps Ren'Py just doesn't like OTF, try the TTF version from Google Fonts (http://www.google.com/fonts/download?kit=Vos0xF1dEQLAYGFVWPAfcofD-WQWLbF4rYwcBGowFYY).
Have fun!
Hi!
I think I should mention that I picked the first two fonts together because they synergize pretty well. Using the second without the first is oversimplifying it a bit.
The same goes for the third - it's intended to be used in conjunction with the semibold version of the same font. But this one wasn't intended for so much text anyway.
For your example, that would mean to replace the girl's name and other relevant headlines (Info, Stats, Prof Stats, Traits) with the corresponding font.
But even without that, I think EB Garamond looks best (out of the four presented options). Then again, my opinion is very biased.
Have fun!
Origin breaks the fourth wall ::)
Also, I kinda dislike how lists with traits and stats look. For stats I proposed earlier Kamidori type of bars that show min and max values as well while not being confusing at all.
And traits list is, well, not flashy enough in my opinion. I think every trait/attack/effect/etc should have a frame of some kind around it, maybe even with different colors depending on elements for spells, for example.
What this thing does?
(http://s001.youpic.su/pictures/1415912400/37379af5d911e0c2ca52865659570b88.png) (http://youpic.su)
I thought about possible restrictions for resurrection.
First of all, we probably need a quest to make it available. It would explain why not everyone can use it too. It still should track player's girls deaths from the start, so you could revive anyone once you complete it.
I thought about exchanging girls and MC's APs for resurrection (time for time, basically), but it might be too difficult to code.
Is it possible to reduce character's level without too much fuss? All D&D games can do it. At the worst we could just reduce current stats values, but it doesn't feel the same to me.
I am not sure if it's sensible to put this much effort into this system, it will just ensure that players will spam saves like crazy...Hm, yeah. Though honest ressurection might give you something good too... Disposition at very least, moar quests from the temple, alignment changes.
Not difficult at all.It might be tricky. I thought about something like 1 AP per level. So in some cases you could spend all APs available to your girls and it still won't be enough, so you should skip the turn and do it again on the next day.
It might be tricky. I thought about something like 1 AP per level. So in some cases you could spend all APs available to your girls and it still won't be enough, so you should skip the turn and do it again on the next day.
We could use Cherry's tavern for rumors, both general to introduce the game world and quest ones to advance through quests.
Like they do it even in huge titles, when npcs tell you random facts about the world.
More importantly, where else to look for clues when you have none? Ask in tavern is better than look around at random streets :)
I mean, we already can use it, not in the future. It's not difficult to write rumors even for me, and it will be useful for temple of time quests.
I think we need to limit quests availability either by MC's level or fame, like they do in many games. To make sure that lvl1 character don't have endgame tasks.
There is a game released recently, Lords of Xulima. It has BE very similar to how I imagined it when I proposed to change the view.
I just propose you to pirate it, take a look and form an opinion :)
Pushed some things for the temple. The folders structure is very chaotic currently, it's challenging to decide where to place files for npcs and locations.
We could use Cherry's tavern for rumors, both general to introduce the game world and quest ones to advance through quests.And I wonder what is the best approach: to make one fixed npc (information dealer or something) or use several generic npcs and pick one of them randomly when you ask people about rumors.
^Looks much better in my opinion!
And I wonder what is the best approach: to make one fixed npc (information dealer or something) or use several generic npcs and pick one of them randomly when you ask people about rumors.
$ pytfall.world_quests.get(event.quest).next_in_label("You found a piece of an idol! How strange.", "piece1") # Can access the quest straight in the event.
but how that knows for what quest it is?Seeing all these awesome screenshots really makes one wonder when the next stable version will be released
In that Strange Idol example, there is only:Code: [Select]$ pytfall.world_quests.get(event.quest).next_in_label("You found a piece of an idol! How strange.", "piece1") # Can access the quest straight in the event.
but how that knows for what quest it is?
What I would like to know is, how to register a quest and add it's description to the quest list from a non-quest label? Like starting multiple quest from one dialogue menu? (let's say, from conversation with that arena girl Xeona or custom girl interaction label)
register_quest("My Cool Quest")
register_quest_in_label("My Cool Quest")
Will do the trick. After a quest has been created you can add messages to it:pytfall.world_quests.get("My Cool Quest").next_in_label("Started My Cool Quest")
This will automatically start the quest if it hasn't been started yet or advance it to the next stage (log in a new message).pytfall.world_quests.get("My Cool Quest").finish_in_label("Finished My Cool Quest")
Will finish the quest.Looks that it should be easy to do SE related quests/events that involves unlocking new locations or adding items and girls to find to the old ones. But I dunno if it's worth creating something like bring me xy items as a quest as it sounds rather boring...
We might as well make it centralized like in Agarest, where all "bring us X of Y" quests are handled by one guild (and one script) instead of multiple npcs/scripts. I mean only simple quest where you need to collect stuff using SE.
Other types of quests could involve special slave training, unusual fights at arena and adventures inside EE (not SE). ST, BE and EE are not really ready yet, so let's make some collecting quests for a start.
Um, a guild requires much less time and resources, because you don't need a new npc and prehistory for every new simple collecting quest.
Any quest that doesn't have any events that belong to them waiting in the event manager will be automatically failed. If you want a quest to persist without events you need to pass manual=True to the register functions or to the next functions if you're moving to an event-less state. Passing manual=False to a next function makes it rely on events again.
I didn't know that... it's odd that frog thing doesn't fail half way then, I'll take a look at it later.
Really? I'm sure you're the one that asked me to put that in...
just feels to me that when we wrap something up and prepare a code base, something else is requested while no new content is created with what we have. That needs to end...
As much as I'd like to see more content, it requires actual modules to be implemented properly.
I propose to finish tagger, BE (because arena), SE, ST, clones (because it's mostly about balancing and content rather than coding) and MC house (because you need to live somewhere if you don't have a brothel and focusing on arena or SE, as well as girls that help you), and then work on content until we'll be satisfied enough to continue adding modules.
...
I mean yeah, there are still no tags for slave training and stuff like that, but that's not depending on me, is it?Sorry, I didn't follow your progress in last two weeks or so. Does the software ready? I mean, it can read and write tags using pictures names?
Sorry, I didn't follow your progress in last two weeks or so.That's because I rarely posted any progress reports, that's why you should tell me if you want them.
I mean, it can read and write tags using pictures names?In theory, that's working since a long while. In practice, I'm still working on details (that are completely unnecessary, but I don't like delivering incomplete products).
Indeed. Xela,
if you want to stop coding and help us with content for some time, you don't need to discuss it first. And if you wonder what else could we need for better quests, I already told it.
As much as I'd like to see more content, it requires actual modules to be implemented properly.
I propose to finish tagger, BE (because arena), SE, ST, clones (because it's mostly about balancing and content rather than coding) and MC house (because you need to live somewhere if you don't have a brothel and focusing on arena or SE, as well as girls that help you), and then work on content until we'll be satisfied enough to continue adding modules.
- Lesbian pictures do not appear when doing jobs.Can you give more details? They're displaying fine for me in both whore job and interactions. (But I only take a quick look)
*Lemme guess, CW deleted a post again ? :DYeah, your hands need to be quick, and your eyes quicker :)
There is also a matter of me having a lot less time to work on the project. You did already tell me what is required for better quests but I've also already replied to it multiple times, but I'll do it yet again:Nah, I quoted that post to show that I proposed to set some not too distant goals, code them and then work on content 3 months ago.
Most reports by players who claimed to play the alpha release for hours wanted faster battles (were using the skip key), not longer once.Then we need to make it faster and possibly simplier. It's still just a placeholder currently, even without a concept. We use it only because we have it.
Not needed as well. MC Apartment is already providing 1 AP point per day (which is huge).But welcomed. Even more than clones, yeah :)
Time temple is awesome too (http://www.pinkpetal.org/Smileys/DarkB/smiley.gif) but we can go without resurrection for a couple of releases.Hm? I figured resurrection is a couple of lines in the code anyway. I just think that it's a good start for making quests.
Do we go through with it or not?Yup.
Do we allow untrained (not broken) slave girls into the gameworld?Ok, if everyone is broken, what are you supposed to do during ST? Broken characters should agree to do anything anyway.
Do we all agree with using portraits for emotions during the VN style conversation (by default)?Yup. Makes things much simplier for characters without 10000+ pictures on pixiv.
Can you give more details? They're displaying fine for me in both whore job and interactions. (But I only take a quick look)
(http://img24.cz/images/44726881562654480535_thumb.jpg) (http://img24.cz/viewer.php?file=44726881562654480535.jpg) There was a problem with them, but I thought it's solved by now...
As for things that help us with events and quests, I proposed somewhere (but I cannot find this post anymore somehow) to at least adapt all existing quests to our new quest system, ideally make one-two as complex and well-commented as currently possible quests/events.
And then it turns out recently that the frog quest wasn't adapted all this time. ::)
Then we need to make it faster and possibly simplier. It's still just a placeholder currently, even without a concept. We use it only because we have it.
Hm? I figured resurrection is a couple of lines in the code anyway. I just think that it's a good start for making quests.
Yup.
Ok, if everyone is broken, what are you supposed to do during ST? Broken characters should agree to do anything anyway.
Yup. Makes things much simplier for characters without 10000+ pictures on pixiv.
Most reports by players who claimed to play the alpha release for hours wanted faster battles (were using the skip key), not longer once.You're confusing propositions for new combat systems with criticism on the old.
We'll still need to specify the moods on other pics... it sucks when you get a profile picture of a girl with 100 joy crying or ecstatic pic of a girl with 0.Please be careful with automatically applied mood tags. If you overuse it, you're punishing players that keep their girls' mood high by reducing the amount of images they get to see.
What existing quests? We don't have any quests that I know of...I'm not sure if you are joking or not.
I can't see why.Why not? BE should be interesting, while people complain that battles are too long (they are too long and repetitive if you fight a lot).
Fair enough, when are we doing this?Now? Would be a good opportunity to improve items system too. Items/traits are not a problem.
The proposal is to isolate them to prison, NPC (training under Blue for example) and training dungeon.I'll think about it, don't have time now.
Yeah, you're prolly right. I got these:I don't have One Piece pack in my game so I can't tell about Nami, but that random elf girl doesn't have it's one "les" pic shown because that image also have "group" tag in it and those are currently excluded from whore job - so you got a random profile pic instead.
(http://s9.postimg.org/ekzm6g98b/2014_11_19_11_07_59.jpg) (http://postimg.org/image/ekzm6g98b/) (http://s9.postimg.org/5naavcrej/2014_11_19_11_11_10.jpg) (http://postimg.org/image/5naavcrej/) (http://s9.postimg.org/o49azwwqj/2014_11_19_12_45_21.jpg) (http://postimg.org/image/o49azwwqj/)
but I think that the anal thing is because those images are tagged with sex as well (maybe an old version of the pack). The les thing for that random girl is kinda odd actually, she seem to have one les pic... Nami also had a runes picture but auto-mood is likely messing that up. Guess that after investigating a bit, it's not the system.
We'll still need to specify the moods on other pics... it sucks when you get a profile picture of a girl with 100 joy crying or ecstatic pic of a girl with 0.Do you think we will need a mood portraits for MC too?
I'm not sure if you are joking or not.
Why not? BE should be interesting, while people complain that battles are too long (they are too long and repetitive if you fight a lot).
Now? Would be a good opportunity to improve items system too. Items/traits are not a problem.
I don't have One Piece pack in my game so I can't tell about Nami, but that random elf girl doesn't have it's one "les" pic shown because that image also have "group" tag in it and those are currently excluded from whore job - so you got a random profile pic instead.
(excluding "bdsm" "mast" and "group" is not very good, I hope we will find a better way how to tag those so we can remove that)
BE: for arena I'm satisfied with the current setup (but I would also welcome faster combat), though it would be nice to have a few skill other then just damage. But that's probably too much work too...
-----------Do you think we will need a mood portraits for MC too?
I guess it would be good, but there's not that many guys who have battle sprite, combat image and lot of expressions together I know of, so we may end with a smaller selection for a while and with generally more know characters as MCs.
Do you mean that things like that frog event are not quests? I don't know, it looks very similar to quest in my opinion.
I don't want to persuade you to work on BE because I don't have a decent concept for it yet. You may continue to enjoy bad feedbacks about it :)
I recall some kind of issues with tracking stats or traits, don't remember. Somehow I cannot find some old posts, not even mine. But you said it, not me.
Also we have specific items for slave training now, I don't know what to do about them. Thewlis wanted to make them miscs, but it is impossible currently.
I meant blocking having an option to add am unbroken character to the team or have one do a job in a brothel. The proposal is to isolate them to prison, NPC (training under Blue for example) and training dungeon.Generaly speaking, attitude to slavery may be different for different social groups, even among slaves. If we make the attitude a part of ST too, like in SM3 and JoNT, then slaves that don't want to escape (even though they can) cannot be considered as "unbroken" anyway.
...
Shackles is a decent idea that I didn't consider but I don't want a simple beach event to turn into checking if a girl is shackled or not either (for example).Then make it simple: the same law that forbids slaves to use weapons also forces a slave whose training is not approved by the guild (ie not "broken") wear shackles outside of dungeon/prison. The moment you allow untrained slave to exit dungeon she gets shackles, no questions asked. There even could be various shackles, for both feet and hands, and you can choose which one to equip. But you can't remove them completely outside of dungeons.
Then make it simple: the same law that forbids slaves to use weapons also forces a slave whose training is not approved by the guild (ie not "broken") wear shackles outside of dungeon/prison. The moment you allow untrained slave to exit dungeon she gets shackles, no questions asked. There even could be various shackles, for both feet and hands, and you can choose which one to equip. But you can't remove them completely outside of dungeons.
I think it's still less farfetched than remove them from city completely.
Shackles could have major penalties to stimulate players to get rid of them, ie train slaves.
And we probably should not let unbroken slaves to work, unless by work we mean bdsm action where slave is securely fixed.
Only untrained slaves should wear them. I suspect they are mostly located in dungeons/slave markets/prisons and rarely leave them. Majority of slaves outside of dungeons are trained, thus dressed as commoners.
More coding for sure. But I don't see how is it less convenient than lock them away forever (except for less coding, yeah).
Nah, it's a color printer for colorblind people. No misleading ads here.
So any chance of having a game update this Christmas?
- We're using new tags loading system in the dev team while all of the packs are still using old one.Let's say it like this: Getting the tagger done in a week would be no problem if you'd pay me. Since you don't (which is obviously a good choice), there are lots of other priorities for me at the moment, especially since christmas is approaching.
Hi!Let's say it like this: Getting the tagger done in a week would be no problem if you'd pay me. Since you don't (which is obviously a good choice), there are lots of other priorities for me at the moment, especially since christmas is approaching.
Have fun!
We decided to create ranks for all classes, same as for whores but what should that look like. I've explained how I see it in general a couple of times but if anyone has any ideas/requests, lets hear them!I have three questions - depending on the answer you can skip the remaining ones:
Hi!I have three questions - depending on the answer you can skip the remaining ones:What it comes down to: Do you want suggestions on rank names or do you want design ideas for the system?
- Do you want to change the system or do you just want to make some minor tweaks?
- If the first: Do you want a linear system (see the money & auto-equip discussion for potential problems) or something more complex (e.g. only X% of characters can achieve the highest rank)?
- If the first: That's basically just the same experience system for all jobs, maybe with different rank names, isn't it?
Have fun!
I don't mind complexity, prolly would prefer an interesting system to a linear one. Ranks names we need to come up with as well.Alright, cool.
^Very interesting idea.
Iirc so far we have 10 ranks for whores though. I think this is too much for such system. Better to have few ranks with more differences.
...
Things that I didn't consider yet:
What is the effect of a higher rank?
Honestly, I don't really know. You are the game's gurus, I'm certain you have better ideas on that point. I just want to note that a rank-up is an achievement that should be rewarded properly and increasingly (meaning that the reward from 4 to 5 should be much higher than the improvement from 1 to 2).
How about slaves?
I think the system can be applied to slaves as well. However, 58 is quite a lot to set one free, so I guess the last tier should be cut (so freedom as acquired at rank 4). A rank 4 slave would then be changed to a rank 1 prostitute/whatever.
We also can add rank requirements to items, if you willing to code it.
It will have to be adjusted because your numbers are ok for prostitutes but warriors need that to be halved and service girls and strippers will only work with a third of the minimums...Yeah, I guess.
My proposals:Maybe a small efficiency increase for all lower tiers (similar to how strippers increase prostitute efficiency, but not as much)?
Slaves should not have ranks of their own but be a part of ranking system for occupations.Makes sense.
Example Tiers (with scaling): Minimum :: Maximum
- For every rank, there is a minimum amount of characters required in order to unlock one position of the next rank. Similarly, there also is a maximum so the current tier can never exceed the previous one. A character can only be promoted if there is a free spot in the next tier.
- Demotions are always allowed. This helps to ensure that position changes are easy to accomplish. If the maximum of the new tier is exceeded by a demotion, the system will deal with that itself by not allowing the player to promote further characters into that tier.
- Promotions have a cost. If a character payed the cost once for the current tier, (s)he can be freely promoted and demoted up to that tier. This will ensure that demotions actually make sense if there is a better character available for the position.
- There is a highest tier (that should be somewhat difficult to reach).
- There is no absolute maximum of employees in a tier. The only limitation is the amount of characters in the previous tier.
Example for scale 1 (values rounded down):
- A :: Unlimited
- B = A * 2/3 :: A (same as B * 3/2)
- C = B * 1/2 :: C * 3/2
- D = C * 1/3 :: D * 3/2
- E = D * 1/3 :: E (no maximum required, it's the highest rank anyway)
That would mean that it requires 58 (1 + 3 + 9 + 18 + 27) characters in a job to be able to promote one of them to the highest tier. I personally think that is a reasonable amount (the highest tier should be hard to reach).
- 27 :: Unlimited
- 18 :: 27
- 9 :: 13
- 3 :: 4
- 1 :: 1
This is not going to work. This means that a player cannot advance a very capable girl to higher rank unless there are 27 nubs in employment as well. I don't think this is acceptable from gameplay perspective. It is not logical either...Wrong. In order to advance one prostitute to tier two, you need two in tier one. In order to advance one to tier three, you need two in tier two. In order to advance one to tier four, you need three in tier three.
I also don't like ideas of demotions. We need a system that doesn't limit gameplay options. Like if a player wants and has funds/reputation to run a high class brothel, there should be nothing enforcing managing 10 sh!tty brothels on the side just to allow having high ranked girls.You not liking demotions is your thing, but they don't limit gameplay options in any way. It's not about the "class" of the brothel, it's about the experience of the employees. A high class brothel doesn't make your girls more skilled. Nothing is forcing the player to do what you describe.
Basically we can just go with the stats/skills/money/level requirements and make sure that those are very, very high for top ranks... I don't have a good (different) solution to limit ranks at the moment but this is too restrictive and forces a very specific gameplay completely removing an option to play a nice game just with 10 of your favorite characters for example...Linear, boring, snowballing system. Not good.
I want to use unmodified skills requirements for ranks so items cannot be used to cheat ranks just by putting them on.I think he meant it the other way around (that you need rank X to wear item Y), which does make sense (because if - as you say - higher ranks have a skill and stat requirement, then using that rank as a requirement for an item that would otherwise require those skills anyway is just a shortcut that simplifies the user interface and code).
I can code it but we already have a system of maxes that make sure that powerful items will not overpower stats of weak characters. You proposal feels like a version of that system. Game is already very complex as it is.
What the hell dude.Lol, that's Xela for you :D
First you comment that the system is a good idea, then you back off with problems that don't even exist.
And by the way...I think he meant it the other way around (that you need rank X to wear item Y)Yup.
Lol, that's Xela for you :D
Wrong. In order to advance one prostitute to tier two, you need two in tier one. In order to advance one to tier three, you need two in tier two. In order to advance one to tier four, you need three in tier three.
I mean come on, it's really not that hard to understand.
As the newcomer to the sea of forum posts, I figured I'd drop in to say hello!
If you'd spare me a few moments of your time, I have a couple questions I'd like to ask:
1) Approximately how large is this game exactly? I was skimming this General Thread for an answer but, it's rather inflated and full of what appears to be a mix of brainstorming and updates (275 is far too much to read through with my time constraints).
2) What are the general recommended/minimum system requirements? I'm not exactly running an optimal high-end system so, it'd be nice to know.
On a side-note, I'd like to commend you all for in your consistent dedication towards this project of you've all put together!
To be perfectly honest, from what I've skimmed through, you've all managed to get me rather motivated to help despite me never having played the game yet! If it turns out that my toaster can't run the game I'll be slightly disappointed...
Also, if you're still on the lookout for a writer, I'll happily contribute my modest English literary capabilities to the cause. That is, unless the actual 'playing' of the game is required (in which case the toaster will have the final say).
You can't really play out a full scenario with just 10 charactersThat actually is intentional. Here's why:
How about we compomise, players gets to have one girl of each rank for free and then limitations apply?So we basically just round up the minimum amount instead of rounding it down. Seems reasonable.
Names, anyone?
WRANKS = OrderedDict()
WRANKS["1"]=dict(name=('Rank 1: Kirimise', '(Almost beggar)'), price=0),
WRANKS["2"]=dict(iname=("Rank 2: Heya-Mochi", "(Low-class prostitute)"), skills={"sex": 100}, price=1000, exp=10000),
WRANKS["3"]=dict(name=("Rank 3: Zashiki-Mochi", "(Middle-class Prostitute"), skills={"sex": 300}, price=3000, exp=25000),
WRANKS["4"]=dict(name=("Rank 4: Tsuke-Mawashi", "(Courtesan)"), skills={"sex": 600}, price=5000, exp=50000),
WRANKS["5"]=dict(name=("Rank 5: Chûsan", "(Famous)"), skills={"sex": 1000, "refinement": 100}, price=7500, exp=100000),
WRANKS["6"]=dict(name=("Rank 6: Yobidashi", "(High-Class Courtesan)"), skills={"sex": 1250, "refinement": 150}, price=10000, exp=250000),
WRANKS["7"]=dict(name=("Rank 7: Koshi", "(Nation famous)"), skills={"sex": 1500, "refinement": 500}, price=25000, exp=400000),
WRANKS["8"]=dict(name=("Rank 8: Tayu", "(Legendary)"), skills={"sex": 3000, "refinement": 800}, price=50000, exp=800000)
I still don't like limiting gameplay options. I look at pytfall as a free open world.It's not really about limiting, more like emulating real life. You can't have 10 top managers if you have 10 employers at all, no matter how good they are.
It's not really about limiting, more like emulating real life. You can't have 10 top managers if you have 10 employers at all, no matter how good they are.
Someone has to do the job.
We don't really need ranks for prostitutes our setup is from the original SimBro and it's both sound and a bit nostalgic for those who played the very first versions of games like PyTFall (SimBrothel, SlaveMaker and Hentai Highschool by the original author (Poolka)).Ah, that old issue again. Just because other brothel sims did it doesn't mean you should and it also doesn't mean that what they did is good.
players gets to have one girl of each rank for free and then limitations apply?... is a good way to solve this.
label xyz:
scene behind the house
show Name emotion
"blah blah blah."
"Header" "blah blah blah"
define abc = Character(_("Name"), color="#ffcccc")
abc "blah blah blah"
abc "blah blah blah \"ring-a-ling\"?"
Well uh...I checked out the Ren'py thing and I think i get it? sort of? I'm still a newborn chick to these kinds of things.
In any case, how do I go about adding in 'dialogue' and where is it needed?
From what I gather, I'm focusing on this one correct?
Writing Dialogue:
label xyz: //Indicates name to the place of a program
label my_label:
# code
scene behind the house //some sort of contextual thing?
show Name emotion //Reference to some sort of mood?
"blah blah blah." //Simple saying statement (1 Argument)
// The \" indicates a special character
"Header" "blah blah blah" //Same as above + a Header (2 Arguments)
define abc = Character(_("Name"), color="#ffcccc")
abc "blah blah blah" //Output is: Name (Header with a colour) - blah blah blah.
abc "blah blah blah \"ring-a-ling\"?" //Output is: Name (Header) - blah blah blah "ring-a-ling"?
$ abc = Character(_("Name"), color="#ffcccc")
python:
# code
I'm also not quite clear on how to manipulate fonts (size, boldness, outlines, italics, stuckthrough, spacing, timing, etc.). If someone could clarify that to me that'd be nice.
abc "{size=40}{b}blah blah blah{/b} \"ring-a-ling\"?"
$ abc = Character(_("Name"), color="#ffcccc", what_bold=True, what_size=40)
Fonts can be manipulated in a number of ways. For example:Code: [Select]abc "{size=40}{b}blah blah blah{/b} \"ring-a-ling\"?"
...
Obviously this is far from ideal so you can also provide properties when you define the sayer:Code: [Select]$ abc = Character(_("Name"), color="#ffcccc", what_bold=True, what_size=40)
what_bold=True, what_size=40
I wrote a simple tagger just now to find out how rusty my Delphi skills are.
How did you handled identical file names in case of identical tags in your renamer? I do hope you did, and not just replace old ones with new ones :)
Hm, I see. That's probably not an ideal solution though, they still could be identical, just with very low probability. It's possible to make them more unique using numbers in alphabetical order.
I also researched metadata a but. Both jpg and png have 64kB limit for metadata length, while because of windows filename and pathname limitations (puny 260 characters) we or players might have problems eventually. I just recently stumbled upon it while unarchiving some file. Are you about using file names?
Delphi can work with meta too, though it won't be nearly as quick and easy as file names.
Renamer wastes a lot of space on "-" symbols. We could greatly reduce the danger of exceeding the limit by abandoning them.
What types of pictures the game supports in girls packs? I recall you mentioned that it doesn't support animated pictures, but I'm not sure about bmp for example.
There is one bmp in the game folder, it's game\content\gfx\interface\images\story\caravan\sword1.bmp. That's why I wondered about bmps.
When I'm worried about filename limit, I think about files like fj30fj380fhwrfwr03h5f101h3fh035hf50hy4437656480wynhyrjhrhre hygh5.jpg that you easily can find on various hentai sites.
They already have long names, so when we add tags we make them even longer. It's not a problem in our packs only because me and Cherry rename pictures before using them.
Perhaps we could force people to use no more than four characters for file names, excluding tags. I'll add autorenamer that will rename all files in the target folder to their alphabetical hexadecimal numbers. That would be from 0000.jpg to FFFF.jpg, meaning 65535 pictures per girl (I think it's enough :) ). So after tagging process they will look like 00A1-pr-r3-h2.jpg.
There will be no filenames that are too long.
Unless someone sticks them in a very deep folder tree and windows refuses to deal with them.
While running game code:
File "game/library/screens/standalongs/tagger.rpy", line 23, in script
python:
File "game/library/screens/standalongs/tagger.rpy", line 100, in <module>
os.rename(f, newdir)
WindowsError: [Error 2]
Don't you have better things to do, like code your own proper tagger rather than doubt my mad Delphi skillz? :)
I'm not sure why living requested to move characters id to end of the filename. Each time you change tags you also change alphabetical order of files in unpredictable ways. It's not a problem for my tagger, but it's a problem for me, and a huge one. Because, well, I'm a pack maker, you know. I actually work with pictures and tags, not just load them somewhere after they are ready.
If you actually can and willing to do all it via renpy, be my guest. I don't think so, though.
Did you try to change tags in packs using your renpy tagger? I did. You can't even save it sometimes:
My final update of tags concept. I handled all cases that I wanted to handle, let me know if I missed something important.
Now I could try to figure out how to deal with traits. Because items system should be rewritten for a start, like I said before.
Nah, I can code it myself. I'm just not sure if I should.
Nah, I can code it myself. I'm just not sure if I should.
If you want to help with coding, get yourself familiar with the game code. It's not easy, I keep asking Xela to write a complex quest with detailed comments so that anyone could understand how to make basics, but to no avail so far :)
If you don't know where to start, try to understand how items system works. Then you will be able to help us to improve it.
Anyway, you should take a look at tags for a start, maybe you disagree with something there.
We discussed flaws of the current items system like 3 times already, it becomes anecdotal. Let me know when you actually will be ready to change the code there, not just talk about it :D
We could start all tagging with two tags:It's more complicated. There are cases when all or almost all pictures are nsfw because it's natural for the character according to the source. One of the best examples is my slime rmg pack, you can take a look.
nsfw
clean
It's more complicated. There are cases when all or almost all pictures are nsfw because it's natural for the character according to the source. One of the best examples is my slime rmg pack, you can take a look.
Either we need a separate tag for it, or use both of them at the same time.
Oh, by the way, if you'd like, I can supply some pictures and/or music for this project as well.You know, we always could use more pictures for backgrounds, both indoors and outdoors.
nsfw I prolly should have explained. It should only contain pictures with explicit nudity and/or sexual/bondage content.That bothers me for some time. All my packs have at least some safe pictures. But if we tag all nude ones as nsfw ones because they are from our point of view, there will be only a few safe pictures, ie little diversity. And we can't really tag them as safe too.
There shouldn't be any packs without normal pics... and even if they are, these two tags would still be a good way to start any tagging process.
I made a simple and very well commented tutorial on how to add content to PyTFall.I'll check it, thanks.
Effort is almost never a bad thing, so yeah, good job for doing something (unlike me), but I have everything you listed so far already implemented (platform independant) - except for a simple purge procedure, which should be a matter of minutes.Cool! I was kinda bored, and coding for yourself is fun, so I spent a couple of evenings on it, meanwhile I found out how case sensitive the game is during reading tags from filenames (not a good thing, really).
2) Non-weapon types of weapons, like the famous dildo sword. And various limitations, like no big weapons for peacful occupations, except Non-weapon ones. I recall you wanted to implement it, but I don't remember if you did.
3) Loot items. Same here, I recall you wanted to implement them, but you never mentioned here that you did.
4) Items that cannot be unequipped by girls once you managed to equip them. Like shackles and stuff. Very useful for ST.
5) Sex toys. Like, you know, plugs and vibrators. SM3 uses them a lot. The problem is, you can wear them no matter what, so we probably need new slots for them.
I think you (or admins?) deleted old threads where we discussed problems with items tracking. Nevermind, I'll try to formulate a better concept for items.
You can't expect to be able to equip any character with an item like that because many characters are free.I mean slaves only, of course.
Slaves cannot manage their inventories anyway so they cannot unequip anything...
this seems like something we need to consider before implementing... it may require too many flags and if/elif forks for this to make sense in the game as a whole.Yup, I'm not sure myself how to handle it.
Nothing has been deleted. It's either archived or still there as the original thread.Search cannot find my own posts that I clearly remember. Perhaps something is wrong with it then.
We have so much on the plate and so much planned already and you want to advance it now??? I can't understand whyI dropped some ideas during initial development, but I didn't forgot about them. An example, lingerie. In wm both lingerie and armor/dress use the same slot (and this is ridiculous). I excluded lingerie because I wasn't sure how to implement it the best way.
I mean slaves only, of course.
So even if you have a 100% loyal slave that works for you for years, you still cannot allow her to manage her own inventory as she likes? Isn't it an overkill?
Perhaps it would be better to lock/unlock slots though. So that player decides which slots trained slave can manage by herself and which cannot.
I also remind you about our recent discussion that you can take untrained slaves to other places as long as they have a special collar equipped. Meaning that even
I also remind you about our recent discussion that you can take untrained slaves to other places as long as they have a special collar equipped. Meaning that even player cannot remove it anytime and anywhere.Yup, I'm not sure myself how to handle it.
At very least it should be possible to use on slaves (you cannot and shouldn't really know if free girls use toys or not, realistically). So perhaps it should be slaves-only items slots, or even flags of some kind.
I dropped some ideas during initial development, but I didn't forgot about them. An example, lingerie. In wm both lingerie and armor/dress use the same slot (and this is ridiculous). I excluded lingerie because I wasn't sure how to implement it the best way.
I'll wait for BE items review, alright.
I told you that I don't like ANY special equipment or clothing for slaves to be work in public. It should be forbidden by law in fear of them finding out how numerous they actually are.Nah, I countered this argument before. Special equipment is for untrained slaves only, and it shouldn't be super visible either.
Slaves shouldn't be completely under your control as well... it's not realistic eitherYeah, that's a tough choice. Either to allow them to run away sometimes (checks everywhere), use special equipment with major penalties to prevent running away (not realistic, but simple), or exclude them from everything unless training is completed (boring).
Nah, I countered this argument before. Special equipment is for untrained slaves only, and it shouldn't be super visible either.
I have some ideas about centralized, less chaotic traits system, though I wonder how many players would oppose the idea of using japanese terms to describe characters. If we need to disassemble ~dere traits [irony]and use simple, short words only[/irony], then the whole current traits checks system is useless.
MindBroken should by the way be removed from the game, it's too costly to work with in development terms. It's also VERY hard to keep track of during development, at least for me.Here we go, cutting good content from the game ::)
*Other option is to leave the system as it is and work with what we have but remove game-breaking traits like MindBroken. It more or less works and will work in the future.Like you said, traits are alien concept for our game. I agree completely, we just didn't have a choice when we began development. Creating detailed concepts for months before even starting to code is a bad idea for pure indie projects, like I've seen many times before.
Here we go, cutting good content from the game ::)
That's not how you do it. Let's be realistic, you would never allow an insane girl to work with customers or fight at arena alone, unless you are insane as well. At least yandere could be controlled to some point, unlike insane ones without a mind as such. Remember JoNT, when you break girls completely, they become almost worthless.
I believe they can follow only the simplest orders, they cannot even be decent cleaners because they could break stuff for example. They should not have high ranks available, and skills/stats should grow very slowly. I guess you don't even have to pay them much, though they should be unable to feed themselves if you don't pay them, so they will die quickly.
Basically, we don't need to track them too much or write many events for them, because they are not persons. Many things should be simply unavailable to them, including normal conversations. In fact, they should be ignored by almost all systems, unless said otherwise.
Now, why we cannot just remove all this and forget about it forver?
- There are a lot of insane characters. Destroying this option will leave them out of the game forever.
- We cannot really use major physical deformities for many reasons. But at least we can use madness to make characters useless when needed.
- This is one of consequences of too excessive slave training in WM and JoNT, and in our case probably too. No madness means permissiveness.
- I expect mind controlling system at some point. WM developers originally wanted to add it, and it's an interesting idea. So behavior of controlled characters is very similiar to insane ones.
* Note that by insane I mean mindless and indifferent, not dangerously unpredictable.
Like you said, traits are alien concept for our game. I agree completely, we just didn't have a choice when we began development. Creating detailed concepts for months before even starting to code is a bad idea for pure indie projects, like I've seen many times before.
Moreover, I feel like using separate body slots (ie gloves+armor/dress+boots) is a bad idea. How ofter people wear running shoes with evening dress? Probably never.
* Note that by insane I mean mindless and indifferent, not dangerously unpredictable.You're talking about two different kinds of insane. I tend to agree with Xela's definition, mindless isn't insane, it's mindless.
for i in traits:
devlog.info("%s: %s" % (i, traits[i].desc))
JoNT is also a very limited concept... I wonder what happens when you put a broken girl as an assistant there, will she do the job (special assistant texts/events)? Did Huntsman include an if fork at least for that?You can't do it of course. They don't have a mind, this would be ridiculous.
= What do you mean by "ignore them" more specifically? Because I have no clue what you mean here.Ok, I can explain why do I think that mindless state is useful.
Yeah, but it's not really new in PyTFall. Many games allow that and are great in every aspect.I feel like it would be better to have more armors/dresses than have three parts of every armor/dress. And use other slots for lingerie and toys instead of boots and gloves.
...
I feel like it would be better to have more armors/dresses than have three parts of every armor/dress. And use other slots for lingerie and toys instead of boots and gloves.
we do not have "personality types" atm.Yet. That's what the new traits system about.
Yet. That's what the new traits system about.
"Sex Industry Workers"courtesans/hookers
"Service Industry Workers"
"Warriors"
"Entertainment Industry Workers"
We can't do that for jobs like Stripper... it will be too time-consuming.Please explain that.
Will allow players to change the name of slaves and give free girls nicknamesThat's actually a great idea.
...
From that new thread about another wm remake,That's actually a great idea.
Please explain that.
We'll have a lot more jobs soon enough and making a rank per occupation is not acceptable, that's too much work.Uhm, yeah, of course, I already had that covered.
I think we can safely ignore the different jobs and stick with the general occupations for the rank names.
We'll make ranks for general industries, stripper does not fit there. We have these four ranks because original concept only assumed four occupations.
ProstituteYou're propably right that stripper is questionable because it's too specific, but entertainer (or variations) doesn't describe the job, it's too general.
Warrior
Stripper
Service Girl
Do we want traits like kind/malicious, or there will be alignment stat for girls too?
Should it be possible to set ranks in girls data files. Or, rather, can ranks even exist outside of MC's girls "community"? Like, can you find and hire high ranked girl?
I still haven't got my head wrapped around all off it completely, for example ranks for warriors in the guild and prostitutes in the brothel make sense but ranks for service girls who clean or bartend, or strip seem less important. It's like we're coming up with yet another way to complicate development for ourselves.Correction: You are coming up with ways to overcomplicate things without adding any value. There is no good reason why the rank system shouldn't be applied for strippers and service girls.
Should it be possible to set ranks in girls data files. Or, rather, can ranks even exist outside of MC's girls "community"? Like, can you find and hire high ranked girl?I don't think it should.
You know, we always could use more pictures for backgrounds, both indoors and outdoors.
They should have high enough resolution (at least 1024x768, but more is better).
I actually always thought that ranks are like more or less officialy earned status in the city that customers can orientate by. So lot of higher ranked girls existing in the city and having ranks for strippers and service girls didn't sounded wrong to me in the slightest...
It's not that strippers can't have them, it's there is a chance that we'll have 20 - 30 professions in the future, coming up with rank names and stat delimiters for all of them is not an option.Let me try to clarify it once more: You already named the four general categories for professions. I already named the four general categories for professions. DarkTI already named the four general categories for professions.
I actually always thought that ranks are like more or less officialy earned status in the city that customers can orientate by. So lot of higher ranked girls existing in the city and having ranks for strippers and service girls didn't sounded wrong to me in the slightest...So this is why Xela wants to drop the reputation stat.
Let me try to clarify it once more: You already named the four general categories for professions. I already named the four general categories for professions. DarkTI already named the four general categories for professions.
The system I proposed was never intended to be used for every single profession - it is intended to be used for every category (regarding both rank names and values) because it doesn't matter if a prostitute is working on the street or in a brothel as long as (s)he is a good prostitute.
So this is why Xela wants to drop the reputation stat.
Essentially (simplified as much as possible) you want the rank system to be a reputation stat for every job category - and I completely disagree with that.
I mentioned the reasons earlier - it's repetitive, unincentivizing and therefore boring.
What I proposed is based on the open market and having limits for each rank makes perfect sense.
I don't want to explain the details of supply and demand here, so let me try to give you an example: If there are too many leadership persons in the city there is a strong competition between them. Eventually, some of them will either get pushed down the ladder by others or they will move out to an area with less competition.
In gameplay terms, that would mean to lose high ranked characters frequently (as soon as there are too many of them) - which would be insanely annoying for the player, which is why my proposed system simulates this behavior with hard limits for every rank. The player has full control over progression and regression, which is a hundred times better than automatic regression, which is ten times more interesting than strictly linear progression.
I agree with CW that ranks needs to work on game level and not on player level as proposed earlier.First problem: You are actively taking away control from the player, which is a really bad thing to do in a simulation.
Novice, Intermediate, Expert levels of general classes. Advancements in those will be without any limitations in their amounts as long as the characters fit the requirement.Second problem: Every character needs to be an expert before even getting to the lowest leadership rank.
Rest will work along the lines of the system your proposed but the maximum will not depend on how many girls of the previous are in employment of the player but how many girls of the previous rank are their in the world.Third problem: That number should change severely every day, making any kind of prediction or strategy useless.
Those will also be VERY expensive and require VERY high stats if not achieved through quests/events.Fifth problem: You are planning to harshly limit those ranks by number, money and stats. Damn, that's tedious.
First problem: You are actively taking away control from the player, which is a really bad thing to do in a simulation.
Random events that influence the rank are one thing, not giving the player options in the first place is completely different.
Second problem: Every character needs to be an expert before even getting to the lowest leadership rank.
Third problem: That number should change severely every day, making any kind of prediction or strategy useless.
Fourth problem: Leading employees are magically related to the amount of people in the city. Neither prostitution nor arena combat is a part time job.
Fifth problem: You are planning to harshly limit those ranks by number, money and stats. Damn, that's tedious.
1) Player cannot control everything in sim game with opponents, that doesn't make any sense. But if my way doesn't work out, it can be easily adapted to work differently.It's not about controlling everything, it's about controlling your own employees. What's the point in hiring and training them otherwise?
2) I never said anything about leadership ranks. Also I don't understand why.That was bad phrasing on my part.
5) True, but it's not too bad with only four main occupation groups.Well... I guess it's just a balance issue that can be solved at any time.
The option of "rank up"-points that can be spent seems interesting. Can you give examples of when exactely the player should get them?
I have a small question.
Who is that "Vyse I" who joined dropbox 01.01.2015, and why the f##k he deleted ALL files from my and CW folders (about 6200 files in total) without a single word?
Thanks DB for restoring system. I just love it.
What is the password for that archive in Gismo's folder?
And why do we even have passwords in a closed environment anyway?
He has absolutely amazing pictures for items in his folder, so I don't want to just delete the archive without knowing what's inside.
Aww, I thought there are more cool sprites since it's called humans :(
I attached a picture to this post, that's example of icon for personality, yandere in this case.
That's what yandere do, right? They can protect you (right side) and they can kill you or anyone else (left side) :)
If you want hidden traits, at least we can have icons to hint about them.
I'm not sure why are you against another decoration for girls gui. If you hate it, just say so :D
Really? I think we have. We haven't decided on flags, but archetypes are done, and I'm quite satisfied with the whole archetypes+modificators system.
And LoL:I should use green color ::)
11 Types :D (http://www.google.bg/imgres?imgurl=http://cdn.playbuzz.com/cdn/bcf825aa-678c-4a05-8d51-638e3a77f666/682a630e-46ed-4ca5-8a4c-43549a552a2c.jpg&imgrefurl=http://www.playbuzz.com/emilys21/what-color-should-you-dye-your-hair-according-to-your-personality&h=184&w=274&tbnid=xFNDBU2wS2GAhM:&zoom=1&tbnh=123&tbnw=184&usg=__bmyqajg9qVAr_OOi4t_UAn5s2tc=&docid=SmRWMqS94zha0M&itg=1&ved=0CCgQyjc&ei=5S2sVL2fDM7kaoDogeAL)
<girl
id="Tsunade"
folder="Naruto"
origin ="Naruto"
name="Tsunade"
race ="Human"
nickname="Slug Princess"
desc="The 5th leader of Konoha, a top level medical kunoichi. Despite her age she acts and appears young. Several invented techniques, and knows the human body well."
charisma="10"
refinement = "15"
libido="20"
constitution="85"
intelligence="20"
exp="0"
joy="40"
character="40"
reputation="15"
health="100"
anal="0"
normalsex="0"
blowjob="0"
lesbian="20"
attack = '25'
magic = '5'
defence = '10'
agility = '15'
mp = '60'
occupation="Stripper"
location="city"
status="free">
<trait name="Abnormally Large Boobs" />
<trait name="Tough" />
<trait name="Smart" />
<trait name="Former Assassin" />
<trait name="Iron Will" />
<trait name="Great Arse" />
<trait name="Charismatic" />
<trait name="Serious" />
<trait name="Unlucky" />
<absolute_block trait = 'Lucky'/>
<absolute_block trait = 'Fragile'/>
<absolute_block trait = 'Retarded'/>
<absolute_block trait = 'Fearless'/>
<absolute_block trait = 'Mind Fucked'/>
</girl>
Sorry that was my fault, I thought I copy and pasted but, I must've I pressed Ctrl X instead of Ctrl C. I didn't check on it for a couple days so that probably caused some headaches.Nah, DB keeps even deleted files for a month or so, I already restored them.
I can put them all back easily enough. I'll just do the copy paste correctly this time.
Btw, how to specify skills in data files? Or, rather, is it even possible? I mean, after we changed skill system.
I don't have a problem with traits (or, rather, flags) in data files that mean basic training in some skill. Like Maid for service.
It means one flag per skill, but names are quite obvious (dancer, healer, etc).
Could one of you point me in the right direction, if there is such a direction that is. xDThere's none :) The picture tags and skill system is in the middle of changing so it would be wasteful to create girl packs for old game version and there are no ready tools for the new one yet.
Hey, lads. Been playing around abit with the game and its looking neat. I kinda wanted to add some of my own girls to the game. And i know drag and drop works, but being anal fuck i kinda want to make em as good as I can. Been looking around for info on how to add em the "right" way but ive come up empty. I remeber finding something about way back when but I cant for the life of me find the info again. Could one of you point me in the right direction, if there is such a direction that is. xD
<?xml version="1.0" encoding="utf-8"?>
<Girls>
<Girl
Name="Yoruichi Shihouin"
Desc="Bleach - *meow*"
Charisma="50"
Happiness="100"
Libido="60"
Constitution="50"
Intelligence="50"
Confidence="70"
Mana="20"
Agility="95"
Fame="0"
Level="0"
AskPrice="0"
House="0"
Exp="0"
Age="26"
Obedience="10"
Spirit="70"
Beauty="80"
Tiredness="0"
Health="100"
PCFear="0"
PCLove="0"
PCHate="0"
Anal="0"
Magic="0"
BDSM="0"
NormalSex="0"
Beastiality="0"
Group="0"
Lesbian="10"
Service="0"
Strip="10"
Combat="10"
Gold="25"
status="free"
location="city">
<Trait
Name="Big Boobs" />
<Trait
Name="Strong" />
<Trait
Name="Adventurer" />
<Trait
Name="Assassin" />
<Trait
Name="Great Figure" />
<Trait
Name="Fearless" />
<Trait
Name="Iron Will" />
<Trait
Name="Fleet of Foot" />
<Trait
Name="Tough" />
<Trait
Name="Long Legs" />
</Girl>
</Girls>
There's none :) The picture tags and skill system is in the middle of changing so it would be wasteful to create girl packs for old game version and there are no ready tools for the new one yet.
I'm planning to look into it this weekend (modify some old tagger and change the screens to use new tags if needed) to test it, and I hope it will all not take that long before it will be possible to start adding girls again - I want to do it too! :(
I would appreciate that, we'll have a tagger to work with again cause I have no idea on if we agreed for me to mess with the Ren'Py tagger or for Dark to finish Delphi one.I have no idea either :D And dunno how much is the new tag set actually considered finished...
But this and tagger aside, is adding corresponding filename letters to the game converter all that is needed to stats using new tags?
i was wondering do you like the layout of the Image Tagger (http://www.pinkpetal.org/index.php?topic=3405.0) if so i can update it for you so it works alot easier
Yup, that could work as well.
I outline a problem with filenames just in case: they have to be unique, so tagger should use some kind of index, unique within one folder. Like abcd-pr-l1.jpg, where abcd is an index and pr and l1 are tags of some kind.
Skills are provided in the same manner as stats, game will know which is which. Obvious difference is that skills are limitless and it is set as pure value and not % of some max.Ok, but how can you know what means skill 30 or skill 100? Is it high or low?
I never said it should be random. In fact, it's your tagger gives random index, not mine :D
Ok, but how can you know what means skill 30 or skill 100? Is it high or low?
With stats we don't have this problem right now.
Skills are provided in the same manner as stats, game will know which is which. Obvious difference is that skills are limitless and it is set as pure value and not % of some max.No, wait. This is very bad in term of design, without characters editor at least.
No, wait. This is very bad in term of design, without characters editor at least.
You have to remember what is a stat and what is a skill all the time.
<girl
id="Ino_Yamanaka"
folder="Naruto"
origin ="Naruto"
fullname="Ino Yamanaka"
name="Ino"
race ="Human"
desc="A kunoichi with sensory abilities. Not a strong combatant but able to get in to the mind of her opponents; literally."
charisma="40"
refinement = "10"
libido="30"
constitution="10"
intelligence="45"
exp="0"
joy="40"
character="50"
reputation="0"
health="100"
anal="0"
vaginal="10"
oral="20"
service="50"
strip="50"
attack = '5'
magic = '25'
defence = '5'
agility = '20'
mp = '30'
occupation="Warrior"
location="city"
status="free">
<trait name="Average Boobs" />
<trait name="Hyperactive" />
<trait name="Psychic" />
<trait name="Former Assassin" />
<trait name="Virgin" />
<trait name="Great Figure" />
</girl>
? The whole point of that is that it's random...Pure random still gives a chance of identical indexes. It should have a pattern of some kind.
Yes, we decided to make refinement a skill, you and me both :)
There won't be xmls. So you propose to use a field like "random_skills": {"refinement": [15, 35]}? And just "skills" it case of unique ones?
Pure random still gives a chance of identical indexes. It should have a pattern of some kind.
We also can leave names alone and just add tags to them, but in this case you have to manually make sure that names are not too long and that they cannot be confused with tags.
Pure random still gives a chance of identical indexes. It should have a pattern of some kind.
We also can leave names alone and just add tags to them, but in this case you have to manually make sure that names are not too long and that they cannot be confused with tags.
So, skills.
anal, vaginal, oral, strip, group, bdsm.
I figured we could use group along with sex skills, at very least because we will have more skills for items (=more ideas). During checks we could always use group/2 + (anal+vaginal+oral)/3 for example, or if we know what body parts are used in group, more specific formulas.
Bdsm could be splitted into domination and submission parts. Though we don't have many domination pics or events, so maybe not. It will help with items, but if skill will be useless, so will be items.
refinement (general knowledge about society) and dancing. Moar in the future.
service, bartending, cleaning and waiting. Yeah, we could use service as a general skill (like, experienced bartender will be not bad waitress either becasue she already has high service). More difficult checks too then, like (service+bartending)/2.
For SE: leadership (better leader = bonuses to stats), exploration (chances to find something), stealth (chance to avoid enemies when hp is too low), traps (they will be in the future anyway, meanwhile could be used to capture monster girls).
=====================================================
For ST we need at least two skills: skill that helps to teach and skill that helps to, well, dominate and enforce.
Well, even if we don't use any kind of stealth in SE, there are stealthy characters, like pretty much any ninja from Naruto.
...
[Among other things, should we use a separate field for archetypes (Kuudere) and special flags (Virgin)?
{
"id": "Kula_Diamond",
"desc": "This young girl has been created with DNA altered to use ice powers by destroyed long ago secret syndicate.",
"origin": "King of Fighters",
"fullname": "Kula Diamond",
"name": "Kula",
"stats": {"charisma": 20, "constitution": 5},
"skills": {"refinemant": 0},
"element": "Water 1",
"traits": ["Kuudere", "Big Boobs", "Long Legs", "Virgin"],
"location": "city",
"status": "slave",
"occupations": ["Service Girl"]
}
]
Is it ok for unique girls json?Among other things, should we use a separate field for archetypes (Kuudere) and special flags (Virgin)?
"location": "city",
"status": "slave",
location="city"ie where to find the girl (we have city only currently) and if she is free or slave.
status="free"
For two years we have in all girls xmls thisie where to find the girl (we have city only currently) and if she is free or slave.
Now you telling me that those lines could be a problem? :D
location="slavemarket"
status="slave"
Without such an option the system is too complex without a reason.
[
{
"id": "Kushina_Uzumaki",
"fullname": "Kushina Uzumaki",
"name": "Kushina",
"nickname": "Tomato",
"desc": "Kushina Uzumaki was a Konohagakure kunoichi who originated from Uzushiogakure's Uzumaki clan.",
"origin": "Naruto",
"race": "Human",
"location": "city",
"status": "free",
"occupation": "Warrior",
"element": "Air 1",
"gold": 200,
"stats": {
"charisma": 60,
"constitution": 45,
"libido": 36,
"joy": 63,
"luck": 3,
"character": 63,
"health": 100,
"intelligence": 25,
"attack": 30,
"magic": 20,
"defence": 25,
"agility": 35,
"mp": 20
},
"skills": {
"refinement": 10,
"anal": 12,
"vaginal": 22,
"oral": 16
},
"btraits": [
],
"ab_traits": [
],
"traits": [
"Bokukko",
"Athletic",
"Hyperactive",
"Fearless",
"Nymphomaniac",
"Smart",
"Former Assassin",
"MILF",
"Long Legs",
"Big Boobs"
],
"battle_skills": {
"FistAttack": 1
},
"magic_skills": {
"Windwhirl": 2
}
}
]
:) lol i see you implimented that before i got a chance to
I wonder if skills should go not from 0, but from minus infinity.
For cases when character is not just knows nothing, but especially bad at something.
Btw we could live without it if it will be possible to set all skills parameters in data jsons, not only value itself. You know, like growth rate.
After the game will be able to read and interpret those tags, we can begin to retag stuff.
Origin "Random Girl" is kinda out of place. There is a list of random places in Evolved Help Wanted thread, might as well use them.
Hm. I never wondered before, but can it use more than 3gb, ie can it be a 64 bit application?
Becasue if it can't, 3 gb is what we have.
That's very low. The more ram the game can use instead of reading from hdd, the better.
Items now accept a new field:Multiplier to counters means faster learning when learning occurs. Multiplier to skill means better performance. I get it.
mod_skills: {"strip": [0, 1, 2, 3, 4]}
Where:
0: Multiplier to action counter
1: Multiplier to training counter
2: Multiplier to skill (when getting a total skill value)
3: Adding to action counter
4: Adding to training counter
Traits now accept a new field:
mod_skills: {"strip": [0, 1, 2]}
Where:
0: Multiplier to action counter
1: Multiplier to training counter
2: Multiplier to skill (when getting a total skill value)
Btw did you fixed traits application? I recall you mentioned that I forgot to change it during trait application and removal. I changed it from 10% to 5% per level.
Also, I'm not sure how should I deal with skills. You mentioned thatMultiplier to counters means faster learning when learning occurs. Multiplier to skill means better performance. I get it.
Does adding to counter mean learning process itself? Like, read a book about cleaning means add to training counter?
Now that I think about it, we should prolly add new fields to items that caps the skill increments for items (so some shitty book cannot increase skill indefinitely.)- Can changes to multipliers be permanents? Like, you read a book and now you always learn something faster. I'm not even sure if we should allow it or not. It could be too powerful.
3: Adding to action countershould be permanent only, thus available only for miscs and consumables. And without negative values (I believe you mentioned it already).
4: Adding to training counter
Never bothered me...It depends on what are we going to do with origin. If it will be used to make girls know each other (and this is perfectly understandable in case of unique ones), then all random ones will know each other too :)
Alright. I'm not sure though how to show in gui something like "cleaning practical learning+5 cleaning theoretical learning+10 cleaning performance+15%".
Btw when you set a skill in girls data files, like cleaning = 30, what are actual parameters in this case?
- Can changes to multipliers be permanents? Like, you read a book and now you always learn something faster. I'm not even sure if we should allow it or not. It could be too powerful.
- But I think that any modification should be permanent. Since it's not charisma or something, it's practice and knowledge, it's hard to imagine how you can obtain it temporary and then lose somehow. So this partshould be permanent only, thus available only for miscs and consumables. And without negative values (I believe you mentioned it already).
It depends on what are we going to do with origin. If it will be used to make girls know each other (and this is perfectly understandable in case of unique ones), then all random ones will know each other too :)
Multipliers are all capped at 1.5 (50% extra). I think items like that will prolly mess the game up but you can always use temp consumables that reverse the effects after some time has passed.Let's say you equip maid dress (1.1) and drink some maid potion (1.1). What's the result? 1.1+1.1, 1.1*1.1, just 1.1?
You loose knowledge and practice skill if not in use for a while but that is a possible mechanic for the future.That requires years. Items work for days.
Let's say you equip maid dress (1.1) and drink some maid potion (1.1). What's the result? 1.1+1.1, 1.1*1.1, just 1.1?
I think I wasn't perfectly clear though. When I say that addings to action counter should be permanent, I mean cases when you, let's say, equip a maid dress (+5 to knowledge) and then unequip it five seconds later (-5 to knowledge).
I guess there could be cursed miscs that can reduce knowledge (permanently too), but when you do something like that with a normal item via equipping, it is ridiculous.
And I have to know for sure if it's harmless to use negative addings ::)
I've flipped images to portraits to try it out for now. Profile pictures work with a normal amount of girls as well, otherwise we'll have to turn off prediction for the that screen of player gathers too many characters or just not use pictures in list at all.In my option, portraits looks too big for current version of the screen with 8 girls, it's kind of waste to have them over profile pics here.
In my option, portraits looks too big for current version of the screen with 8 girls, it's kind of waste to have them over profile pics here.
BUT if we make the panels smaller and fit more of girls in one page (may be reasonable anyway), then portraits would be really great here. I would like to avoid having just names if we can... Many games use a downsized versions of pictures just for these lists, maybe we could also do it with portraits?
After you try to talk with a girl in brothel, music disappears forever until you visit some other location.
How is it possible for a brothel to have -5 free rooms from 25? If it means that there are not enough rooms for everyone, it's still confusing.
Do skills multipliers have min cap?
I'm not sure, do we have a separate strip skill, or dancing only?
I'd say we need a min multiplier cap about 0.3, just in case.
Another question.
Let's say we have two items, both with training multiplier 0.5. We equip both, thus we have multiplier 2 that will be capped at 1.5. How many items with training multiplier -0.5 you have to equip after that to have multiplier 1 again, 1 or 2?
Small traits push according to the new concept. I still want to think about body traits a bit, maybe something good will come up. Also deleted useless now two effects that were based on libido.
Last traits push. I reorganized them a bit.
Next step is retagging.
Bug...
In my option, portraits looks too big for current version of the screen with 8 girls, it's kind of waste to have them over profile pics here.
BUT if we make the panels smaller and fit more of girls in one page (may be reasonable anyway), then portraits would be really great here. I would like to avoid having just names if we can... Many games use a downsized versions of pictures just for these lists, maybe we could also do it with portraits?
[A slave, as you can see.
{
"id": "Cloche_Leythal",
"fullname": "Cloche Leythal",
"name": "Cloche",
"desc": "Ex Holy Maiden, she is harsh, demanding, often borders on rude, and incredibly distrustful of others.",
"origin": "Ar tonelico",
"base_race": "Human",
"race": "Reyvateil",
"location": "city",
"status": "slave",
"occupation": "Warrior",
"element": "Air 1",
"gold": 300,
"stats": {
"charisma": 60,
"constitution": 25,
"luck": 5,
"character": 70,
"intelligence": 30,
"attack": 15,
"magic": 30,
"defence": 10,
"agility": 20,
"mp": 20
},
"skills": {
"refinement": 50,
"management": 40
},
"btraits": [
],
"ab_traits": [
],
"traits": [
"Virgin",
"Kamidere",
"Big Boobs",
"Chubby",
"Elegant",
"Magic Gift",
"Natural Leader",
"Serious"
],
"battle_skills": {
"FistAttack": 1
},
"magic_skills": {
}
}
]
hero.add_girl(char['Cloche_Leythal'])to test her. She appears in the brothel, but as a free one.
char['Cloche_Leythal'].location = testBrothel
char['Cloche_Leythal'].occupation = "Prostitute"
char['Cloche_Leythal'].action = 'Whore'
char['Cloche_Leythal'].status = 'Slave'it doesn't help. WTF?
Small tagger update.GREAT! This was really needed *Thumbs up*
- Now you can resize the window, and image will resize together with it.
- After you save tags, file list automatically gets focus every time, so you can use arrows keys to freely navigate it.
What do you think?:I like it.
...
Also, would be cool to just add a character via console, without editing scripts. I tried hero.add_girl(char['Cloche_Leythal']), but of course it would be too easy ::)
About the image sizes, is there any worth in keeping images larger then they are resized to in game? Or is it just a waste of space to have something larger then 1280x800 (game size) or even 740x685 (job images) and I can freely resize everything to fit into those without any loos?
I think that you could release two versions of your packs, one with resized images (as compacts as you can get them) and one with fullsized images. That was my way when making packs for WM in the past, it does not require a lot of time.I simply resize everything to 1000x1000, and convert to jpg if there is no transparency.
Ah yes, you right, console works after I removed her from scripts.
But even via console she is a free one.
I simply resize everything to 1000x1000, and convert to jpg if there is no transparency.
You right, I had a moment of retardity, it seems.
I use several portraits for various emotions if possible now. And it seems that portraits are randomly chosen, it's not unusual to see sad or angry portrait with 100 joy. Now we see portraits all the time, so this is important matter.
In terms of convenience for modding unique items probably should be inside character's folder, I mean both json and icons. Maybe in a separate folder, like \content\chars\Arcana_Heart\Lilica_Felchenerow\items.
That sounds vague to me. Where modders should write their unique items exactly?
I suppose you do know that quest items should not be sellable or tradeable. Ideally, unique items for girls should have such options too (when needed).
Why would you want to give some important item like a key from a dungeon or, I don't know, unique scripted summoning talisman to some girl if you can keep it in your inventory in a separate category and use when needed?
Theoretically there could be stuff like quest armor or weapon, I guess. However, characters can disappear from the game completely while not hired, so items could be lost forever, so we have to track if quest is failed because of it.
Retagged King of Fighters pack. There is only one character, but she is very known. I kept stumbling upon her all the time, so I made a pack after all.
And tagged Attack on Titan pack, I made it several months ago but didn't tagged until we finished new concept.
I have to say, using portraits+sprite makes packs creating much easier.
Now would be a good time for guide about creating unique girls items. I'm working on a pack where characters could use such items.
So, those items already will be in girl's inventory from the beginning? And all that remains is to add item json and icon in the items folder?
label start_Airi:
# registering item
python:
item = Item()
item.id = "Wraith's Scythe"
item.icon = "content/chars/Queen's_Blade/Airi/Airis_scythe.png"
item.desc = "This high quality scythe has been imbued with dark magic and has the ability to become incorporeal together with its wielder."
item.mod = dict(attack=25, magic=10)
item.max = dict(attack=15, magic=5)
item.price = "0"
item.sex = "female"
item.chance = "0"
item.eqchance = "0"
item.slot = "weapon"
item.type = "Scythe"
item.attack = "ScytheAttack"
item.hidden = "false"
item.init()
items[item.id] = item
# equiping item to girl
$chr=char["Airi"]
$chr.inventory.append(items["Wraith's Scythe"])
$equip_item(items["Wraith's Scythe"], chr)
return
item.mod = {"attack": 25, "magic": 10}
chr=char["Airi"]
chr.inventory.append(item)
equip_item(item, chr)
But put it on pythons indent if you are not using oneliner statements ($).
I see. This script is tied to start_Airi label, it seems. What to do with it?
label start_Hinata:
label start_Nami:
So, the label is always 'start_' + character id? What would happen if you use it for random character id?
Can we use height field in jsons now?
I keep tagging stuff at work, like 6-7 hours every day. Damn, it better be the last massive retagging ever.
Update for tagger.
- It now has pytfall icon too! :)
- Added another sorting option, mask. As long as it selected, a text field near it works as a file mask for file list. This way you can freely sort files as long as you remember tags, like *nn* will mean all SFW files.
I remember some other option from wm that we could use. You can control what kind of sex services your brothels provide. I'm not sure how useful would be to allow/prohibit all types, but at vety least you could prohibit vaginal sex to preserve virginity if needed.
Did you fixed portraits emotions? I can't tell, I just got a sad slave with 100 joy, while others seem happy.
this new personalities are a bit troubling for me when I'm trying to add girls from sources that doesn't give much official info about that, like Kancolle or Idolmaster. Or vocaloids, even most known Hatsune Miku is a bit different in every song...
Tagged guilty gear pack.
We can calculate how long it will take. It's been 10 days since I started retagging, I tagged about 4000 pictures, thus about 400 per day.
Remaining unique characters have about 9500 pictures, random characters have 7100 pictures. So I'll need about 42 days more to complete everything.
Damn, at this point even help with tagging is welcomed ::)
Link?
First: FutunariPalace is login only. Here's a direct link (https://mega.co.nz/#!iwxBDIrZ!ZEFqF5VzYVXJ4bdc6pEEwR8PhWbIeJ59no_2UrHdU4s).
Second: How exactely do you know that he is creating things effortlessly (especially given how it took several years for him to reappear)? How do you know that he is not worrying about comparisons and sense?
He creates a new concept, writes a simple game for it and forgets about it forever ::)
Uploaded Queen's Blade pack. I decided to drop Irma, she doesn't have enough pictures even for portraits. So we might as well rename Blue who uses her sprite to Irma. She has pretty much the same personality anyway (and she likes cats ::) ). All Irma pictures can be used there too.
@Cherry, could you please answer my pm?
chr.true_row = 0 # Backrow
chr.true_row = 1 # Frontrow.
Torrent failed because of the tracker a about a month agoWell... I stopped seeding after reaching a share rate of 200. DHT only (trackerless torrent) should still work if people are still seeding.
Was it in a password protected archive with encrypted file names? I hope it wasn't, otherwise we have a problem :(
I'll have to remake items a bit after finishing with packs, so we need a conclusion about stats before I'll begin it. I mean vague things like battle stats and libido. Also we need to figure out what to do with existing spells, I mean do we need items to learn them or not.I mean it. I won't be able to work on items until we sort that out.
I mean it. I won't be able to work on items until we sort that out.
File "game/library/screens/pyt - screens - arena_inside.rpy", line 15, in script
$ pytfall.arena.screen_loop()
File "game/library/screens/pyt - screens - arena_inside.rpy", line 15, in <module>
$ pytfall.arena.screen_loop()
File "game/library/classes - arena and exploration.rpy", line 1098, in screen_loop
self.start_chainfight()
File "game/library/classes - arena and exploration.rpy", line 1955, in start_chainfight
be_bridge_team_setup(hero.team, battle, f_class=PlayerFighter, skip=True, sprite_flip=False)
File "game/library/functions.rpy", line 769, in be_bridge_team_setup
Member.RegisterSkill(Library.Skills.__dict__[key])
KeyError: 'PureLight'
Well, I tried :)
Now, items and stats.
Now, items and stats.
- magic defence of any kind. It could be several elements resistances, it could be one single stat like magic defence, it could be some tricky formula based on our old stats. But it should not be just normal defence, it ruins the concept of magic.
- we could use a new field for items that changes character magic damage. Like, fire damage +n%, water damage -m%.
It's not mandatory, but it will help with items creation a lot.
- if you don't have any other plans, we need items to learn spells. I don't remember if we have such a field or is it works as intended since I never used something like that before.
That leads us to possible limitations that we discussed before, like only characters with dark affinity could learn dark spells by themselves, and you need such a character with big enough desposition if you want to learn a dark spell without dark affinity.
I was thinking about consumable books (or miscs) that add a spell after using, we already have some cool icons for such items in db. I mean permanently, of course.
As for mag def, I was thinking about formulas based on defence and constitution for normal attacks (not just defence) and defence and intelligence for magic attacks.
Like (2 x def + (int *or* const depending on attack source))/3 at very least.
One more thing. I tested high level characters, it's not like they have billions of hp. But nevertheless in many games there are items that restore health/mp/stamina in percent, usually about 25, 50 and 100%, thus solving any possible problems with high level healing due to balance issues. They also considered as high level items, more expensive and rare than usual restoration items.
In our case such items should be hardcoded.
Aww, I thought you completely replaced the old BE finally :D
Constitution only as a tertiary stat. Defence will work for physical attacks and Defence + Intelligence and Constitution for magic. I would not be against keeping everything as it is either...Well, magic should be more powerful since it requires mp after all, and elemental weaknesses are not enough. Otherwise there is no point to use it at all without such a weakness among enemies.
You explained before how to make items sets, but I'm not sure where to write that line exactly. A new json perhaps?
And I'm not sure if you coded that already (I don't think so).
Well, magic should be more powerful since it requires mp after all, and elemental weaknesses are not enough. Otherwise there is no point to use it at all without such a weakness among enemies.
When you will need several stats to resist it, it's already better than nothing.
When you will need several stats to resist it, it's already better than nothing.
If you need me to do something for the items/stats, let me know and I'll try to get it done tonight.Well, spells learning for miscs and logic for sets.
Well, spells learning for miscs and logic for sets.
Oh, I can add sets anytime. It's just people continue to ask us about them every time they talk about items, it's not even my idea :)
I think 4:3 and 16:10 monitors are no longer manufactured, so I don't see any reasons to not use 16:9.
Yeah, it is sensible for physical attacks to consume fatigue.
I'm not sure, I haven't seen any 4:3 in stores for years, even laptops. And 16:10 are very rare, so I assume they are just leftovers.
I had to buy 16:9 even though I had a very good 4:3 because they stopped to support 4:3 in many games and even at some websites.
I propose to add poison and regeneration effects into BE too as examples of effects. I metnioned that already somewhere, we could use power of effect there. Like [poison, 50] means -50 hp per turn.
You mean the "attack" field is now called "attacks"?
we should prolly add new fields to items that caps the skill increments for items (so some shitty book cannot increase skill indefinitely.)
Ok, here we go. I'm working on items, so
are you over complicating the solution?
Or you could just cap the actual skills to save you time.Well, we don't want to cap skills, we want to make different items. Like, one item can rise a skill up to 70, another one up to 200, and a rare one doesn't have limitations at all.
set a repeating if else statement the if the skill is such in such level the Stat raising item will fail to be used else the item works.
I did that already, field is called skillmax, older max was renamed to statmax.Yeah, I recall that, but I couldn't find the post about it so I thought maybe I'm mistaken.
Can you throw these files into your DB folder? You can find them in the game, some freaky thing happened and I can no longer find or restore them with any means...Thrown into your folder. There are a lot of files and folders in mine, you might get confused :)
...
...
I think I renamed all the cmax fields long time ago.Nope, it's still cmax everywhere in our items jsons. Are you sure you renamed the field in the code at least? :)
Nope, it's still cmax everywhere in our items jsons. Are you sure you renamed the field in the code at least? :)
How to set a dark background for items, again?
{
"id": "Icicle Staff",
"desc": "Like the name says, it’s an Icicle. Made more firm and lighter with magic, it is used as a staff but also successfully as a walking cane.",
"icon": "content/items/weapon/ic.png",
"price": 550,
"sex": "unisex",
"bg_color": "dark",
"chance": 0,
"badness": 95,
"eqchance": 1,
"hidden": false,
"infinite": true,
"slot": "weapon",
"type": "Rod",
"attacks": ["RodAttack"],
"dismod": 5,
"max": {"magic": 50, "mp": 20},
"mod": {"magic": 20, "refinement": 5, "defence": 5, "attack": -10}
},
New push.
I was able to replace some items icons with better ones this time thanks to new resources in our db.
Right now the main problem are some ugly gloves. Well, maybe not ugly, but not as pretty as other items. I mean non armor items, like linen gloves. We have some decent icons for non armor boots and dresses, but not gloves, sadly.
Well, temporary traits are good for things like scars, diseases or addictions, and that's how they used in wm. All this can be done via effects.
And another items push.
When at the equipment screen you change between the girl and MC, it resets items filter to "all" every time. That's pretty inconvenient.
How do you select that inverted image for equipment doll background? Randomly, I guess? Sometimes the game uses not big enough picture, and then it looks very strange.
How about using inverted sprites?
I see.
There are some items that change max reputation. Some decrease (and they work), some increase (and they don't).
So, either we work freely with max reputation, or you forbid to decrease it too in the code.
Aaand max joy cannot be increased too. I don't see any possible problems with high joy, so let's enable it.
We're using sprites. What we used to call quest images. Tags are not updated to new system yet (I am waiting for CW to update his packs + working on other stuff).Sorry, but I'm not close to finishing that yet, I'm working slow as always :(
I can help you with tagging (not updating packs though).
The problem is that Cherry wanted to update packs for a start before tagging. I'll take a look at Kushina.Oki, if we need them fast, I'll switch to updating them right away and send them to you, if that's really ok.
We need to do something about slave training items... There are harnesses in body slot, meaning no clothes when they are used.
I pused new body json. After your last push if you equip and unequip Short Kimono (removes Clumsy trait), you will get Clumsy trait.
Moreover, you can have clumsy and elegant at the same time. Something is very wrong there.
Yup. Our standards are higher now than in the beginning 3 years ago. We need a certain type of sprite and at least 3 portraits. And ideally there should be profile pictures for various emotions.
Some minor characters, like Kurenai, don't have suitable pics even for that.
Can't be helped, unless you want the character no matter what.
Oh, it's impossible. Kurenai is not the worst case, there are even more minor characters like Mei or Tayuya who absolutely don't have enough pictures to work properly unless we will hire an artist.
"id": "Bokukko",
"desc": "Confident, competitive and boyish personality, also known as a tomboy.",
"mod": {"constitution": 100, "refinement": -100, "upkeep": 5},
We've agreed to move refinement to skills.Yup, I wrote that file before we had fields for skills, even before we had a list of skills. I'll rewrite it after items.
...
And I figured that by now we already have normalization for girls stats (like luck) in jsons.
Ok, time to do something about libido concept, even as a placeholder without deep coding.
There are items, mostly consumables, that are clearly supposed to rise libido, ie making character horny. Increasing sex skills multipliers is not the same thing, though it helps.
I suggest to add an effect, like Aroused or Horny, that will serve as a flag instead of high libido stat.
We'll have to simplify and recode a lot of stuff to make the game development manageable I expect, but how is impossible to guess atm.Um, like what? I'd say we cannot afford EE without random maps generator, and interactions with MC should be based on main personality (I'll rewrite interactions file after items too). I don't think it's possible to simplify something else right now :)
Um, like what? I'd say we cannot afford EE without random maps generator
and interactions with MC should be based on main personality (I'll rewrite interactions file after items too). I don't think it's possible to simplify something else right now :)
Can't you just take the code from Alkion? I have an impression that there will be rmg.
Well, either we use rmg or stick to SE without EE of any kind. I don't believe that we can use other engines, they look even more complicated.
What I don't like in our SE is that MC cannot explore it directly. EE solves it, but there are other options. Like introduce assistants that control stuff instead of him and allow players to send MC into SE.
I updated and uploaded Kushina pack, it's in my thread. And another items push with bugfixes.
I got rid of some considerably ugly icons as well thanks to Gismo's resources. I'm sure that I'll finish items during this week.
There is something in gui that bothers me. After you exit the girl screen, you appear on the first page of girls list every time. It's ok when you work with Hinata only, but when you want to give items to several girls, it could be irritating. Ideally, the game should remember the page.
battle_skills = {"Skill": 1}
magic_skills = {"Skill": 1}
attack_skills = ["Skill", "Skill2", ...]
magic_skills = ["Skill", "Skill2", ...]
like traits and will not be removed if item is unequippedUm, what? If you equip a sword that gives a skill and then unequip it, the skill will remain? If so, then wtf? :D
When you're fixing characters jsons, please change:But those numbers after skills are supposed to set up battle AI, aren't they?
Um, what? If you equip a sword that gives a skill and then unequip it, the skill will remain? If so, then wtf? :D
But those numbers after skills are supposed to set up battle AI, aren't they?
Ah, I thought you simplified the system by making skills permanent only.
Any thoughts about battle AI btw? Looks like Jake's BE is heavily based on rng without aggro system of any kind.
Will we have any more battle skills before the next release? I wonder if it's time to add skills teaching items.
Before doing something there, we need a gui for skills. At least description and small element icon. Right now people have to guess what skills do.
I've noticed recently that the engine does not throw an error anymore if you use Tab symbol in jsons. I really hope they finally made it usable, and it's not just some tricky bug :)
I fixed traits json a bit and began to rewrite interactions. After that I'll write descriptions for skills.
Btw do you want to keep FF names (~ga, ~ya, ~ra) or it's ok to change them?
Also, in my db\Images\Icons\Elements there are more icons that could be used for non elemental skills, like poison or bleeding.
The main purpose of elements system is to set elemental weaknesses without too much trouble. The only thing that the current system cannot do is to handle multielemental cases.
If we'd had like 5 people on the battlefield, or it would be possible to change characters during battle (FF10, Golden Sun, Neptunia Rebirth...), then it might be justified.
Elemental alignments that are not strings = number for every single element = huge items rebalance and the need for many dozens new items to cover alignments properly.
I don't really think that we need a separate mage class for every element considering how small our parties are.
I tested tab a bit. There are tab symbols in our traits json, and the engine doesn't mind it. But inside interactions jsons they are not tolerated. How weird.
We also have a small problem. I don't remember who separated our interaction file into small ones (not me for sure), but it wasn't done correctly for unknown reason. We lost all lines that were reactions to insults.
I'll try to restore them via our repository tonight.
We also have a small problem. I don't remember who separated our interaction file into small ones (not me for sure), but it wasn't done correctly for unknown reason. We lost all lines that were reactions to insults.
I'll try to restore them via our repository tonight.
Alright, girlmeets lines are pushed. Even if we'll need to rework GM somehow, at least all lines and traits there are good.
Now I'll see what I can do with battleskills named and descriptions. I'll probably add items for learning spells right before the next release, since skills names might be changed.
After descriptions there are two systems that require attention in terms of content, SE and ST.
Thewlis's code is well commented, so it's not too hard to convert some training actions from SM and JoNT. Though I'm not sure if the module is completely ready or not.
However, since in theory we support any kind of packs, even without huge variety of bdsm pictures, we'll have to add some tricks. Like sounds of whip and maybe screen shaking instead of whipping picture, or prison bars sprite above backgroundless girls pictures. Something like that.
For SE I'd like to have some global map with various types of territory for a start, but I failed to find one, as well as all those people who tried to find or create one.
I don't know where to look for exploration code used for fighters guild. There is a lot of old code for our initial forest maze SE and for tiles that you tried once, it's super confusing...
I'd like to know where is the code related to content, ie locations, items, mobs that you can find in SE.
Btw why do we have several icons for some of the elements that are seem to be picked randomly every time you need to show one? I mean, we could use those icons for some new elements, so we should keep them, but why are they used for the same element?
Guess who has arisen from the grave? Totally didn't mean to spend almost 5 months away... :(
Anyway I'm pulling from the repo as I type, and so far I've flagged somethings ya'll need me to update. I'll get a proper list up in the ST thread once I've refamiliarised myself with where I was.
I keep managing to crash Mercurial whenever I try and pull from the repo. I'll keep trying but I might have to full redownload everything tomorrow.
I'm using TortoiseHg. Reset my password on SourceForge and I can get into the repo fine on there, it just keeps stopping part way through with an authentication error.
Xela, care to share Hinata's json? Or maybe I should just make jsons for all 3 Cherry's girls...
Well, I come out of the shadow and try to put graphic updates here too )
Brothel_managment and Next_day summary screens. As usual the experimental version.
(http://s14.postimg.org/5gsabi3j1/image.jpg) (http://postimg.org/image/5gsabi3j1/) (http://s14.postimg.org/n83wpyixp/image.jpg) (http://postimg.org/image/n83wpyixp/)
I keep looking on what you do guys and i just have to say: wow, really great work and the interface seem to be really cool !
Can you resize animation made via anim.Filmstrip? Basically, I have animation for teleportaion, but it's not as big as character sprite that should use it. I tried to use ProportionalScale in various places, but it refuses to work.
image teleport = anim.Filmstrip(ProportionalScale("path/img.png", 400, 400), *args, **kwargs)
show teleport:
zoom 1.5
image teleport = FilmStrip("path/img.png", *args, **kwargs)
image teleport = Filmstrip('content/gfx/images/Teleport.png', (256, 256), (4, 4), 0.1, loop=False)...
NameError: name 'Filmstrip' is not defined
When did you pushed it? Right now I have
Originally I wanted to show main personality traits icons next to girls names somewhere. But we might as well show classes icons there, they are even more informative. And in any case we need to show traits icons somehow, and not at a separate tab where everyone will ignore them.
I'm not really sure how to handle it, especially since not every trait will have an icon. For example, we could separate traits list into two parts, for major traits with icons and minor traits without. And we need place to show those icons next to traits themselves.
- Please do not overwrite unique characters status for testing.What do you mean?
Gismo, I have a simple idea. Pytfall letters should burn. Like here (http://diablo1.ovh.org/gfx/awards/diablo.gif), but better :)
What do you mean?
You are supposed to use ingame tags, not the once from filenames.So I should use these (http://www.pinkpetal.org/index.php?topic=3510.msg31986#msg31986) strings instead?
Yeah-yeah. I guess Thewlis just forgot to mention in his well commented example this little "school name = folder name" thing which he coded by himself without a doubt.
def get_lesson_image(self):
"""
Returns an image for the lesson.
"""
if self.image is not None: return self.image
else:
images = list()
if self.type in os.listdir(content_path("schools")):
for file in os.listdir(content_path("schools/%s"%self.type)):
images.append("schools/%s/%s"%(self.type, file))
if len(images) > 0: self.image = choice(images)
else: self.image = "gfx/interface/images/no_image.png"
return self.image
So I should use these (http://www.pinkpetal.org/index.php?topic=3510.msg31986#msg31986) strings instead?
init python:
tags_dict = {
# Main Tags:
'nn': 'sfw',
'nd': 'nude', # Nude Main Tag (Used to be subtag)
'nn': 'naturalnude',
'sx': 'sex',
'bs': 'battle_sprite',
'po': 'portrait',
'qs': 'vnsprite', # Used to be quest
# Nude/SFW Subtags:
'pr': 'profile',
'pa': 'girlmeets',
'pb': 'battle',
'pc': 'rest',
'pd': 'beauty',
'pf': 'etiquette',
# Locations:
'l1': 'no bg',
'l2': 'simple bg',
'l3': 'outdoors',
'l4': 'indoors',
'l5': 'beach',
'l6': 'onsen',
'l7': 'pool',
'l8': 'stage',
'l9': 'urban',
'la': 'wildness',
'lb': 'suburb',
'lc': 'nature',
'ld': 'dungeon',
'le': 'living',
'lf': 'public',
# Emotions:
'e1': 'angry',
'e2': 'confident',
'e3': 'defiant',
'e4': 'ecstatic',
'e5': 'happy',
'e7': 'in pain',
'e6': 'indifferent',
'e9': 'sad',
'e8': 'insane',
'ea': 'scared',
'ec': 'suggestive',
'eb': 'shy',
'ed': 'tired',
'ee': 'uncertain',
# Clothes:
'c9': 'lingerie',
'c8': 'no clothes',
'c3': 'indoor',
'c2': 'formal',
'c1': 'everyday',
'c7': 'transformed',
'c6': 'cosplay',
'c5': 'ripped',
'c4': 'revealing',
'ca': 'armor',
'ck': 'cow',
'cj': 'cat',
'ci': 'bunny',
'ch': 'yukata',
'cm': 'ninja',
'cl': 'dog',
'cc': 'maid',
'cb': 'swimsuit',
'cg': 'sportswear',
'cf': 'schoolgirl',
'ce': 'nurse',
'cd': 'miko',
# Actions:
'a1': 'stripping',
'a3': 'cleaning',
'a2': 'bathing',
'a5': 'dancing',
'a4': 'cooking',
'a7': 'exercising',
'a6': 'eating',
'a9': 'gambling',
'a8': 'fighting',
'aa': 'healing',
'ac': 'musician',
'ab': 'magic',
'ae': 'sleeping',
'ad': 'reading',
'ag': 'singing',
'af': 'shopping',
'ai': 'studying',
'ah': 'sport',
'aj': 'waitress',
# Sex Actions:
# Masturbation:
'ma': 'masturbation',
'm5': 'hand',
'm4': 'othertoy',
'm7': 'titsvibrator',
'm2': 'analplug',
'm1': 'analbeads',
'm3': 'dildo',
'm6': 'vibrator',
'm8': 'forced',
# Cumcovered:
'cu': 'after sex',
# Group:
'gr': 'group',
'gg': 'ass',
'gf': 'group restrained',
'ge': 'group rape',
'gd': 'othersmast',
'gc': 'notmain',
'gb': 'bukkake',
'ga': 'girlhidden',
'gl': 'tits',
'gk': 'feet',
'gj': 'hands',
'gi': 'mouth',
'gh': 'pussy',
'g7': 'threegirls',
'g6': 'twogirls',
'g5': 'onegirl',
'g4': 'moreguys',
'g3': 'threeguys',
'g2': 'twoguys',
'g1': 'oneguy',
'g9': 'guyhidden',
'g8': 'moregirls',
# BDSM:
'bc': 'cumcovered',
'bd': 'bdsm',
'b4': 'suspended',
'b5': 'whipped',
'b6': 'tortured',
'b7': 'alone',
'b1': 'leashed',
'b2': 'bdsm restrained',
'b3': 'spanked',
'b8': 'girl',
'b9': 'hiddengirl',
'be': 'dominatrix',
'ba': 'guy',
'bb': 'hiddenguy',
# "Normal" Sex:
'ns': 'normalsex',
'p2': 'straight',
'p3': 'partnerhidden',
'p1': 'gay', # Former "les"
# poses:
's9': 'standing',
's8': 'spooning',
's3': 'missionary',
's2': 'doggy',
's1': '69',
's6': 'scissors',
's5': 'ontop',
's4': 'onside',
's7': 'sitting',
'sb': 'restrained',
'sa': 'rape',
# Sex to character: (startswith 2c *To Character of the image)
'sl': '2c hug',
'sc': '2c analfingering',
'se': '2c lickanus',
'sg': '2c analtoy',
'sf': '2c lickpussy',
'sh': '2c vaginaltoy',
'si': '2c anal',
'sj': '2c vaginal',
'sk': '2c kiss',
'sm': '2c caresstits',
'sd': '2c vaginalfingering',
# Sex done by character: (startswith bc *To Character of the image)
'sz': 'bc vaginalfootjob',
'sy': 'bc analfootjob',
'ss': 'bc hug',
'sr': 'bc handjob',
'sp': 'bc footjob',
'sw': 'bc vaginalhandjob',
'sv': 'bc analhandjob',
'su': 'bc titsjob',
'st': 'bc kiss',
'so': 'bc deepthroat',
'sn': 'bc blowjob',
't6': 'bc toypussy',
't7': 'bc caresstits',
't4': 'bc vaginal',
't5': 'bc toyanal',
't2': 'bc lickpussy',
't3': 'bc anal',
't1': 'bc lickanus',
# Time/Season:
'z1': 'evening',
'z4': 'winter',
'z2': 'night',
'z3': 'autumn'
}
1) It checks is there is a single image assigned to schools.It makes no sense. You cannot freely set a folder for random pics, like XXX folder for any sex courses. It must be XXX course only. That's why I suspect it was made only to provide backward compatibility with old system.
2) If not found, it will try to find a folder with the name of a lesson and select a random pic from there.
3) If that fails as well, it will use a no image found picture as last resort.
It makes no sense. You cannot freely set a folder for random pics, like XXX folder for any sex courses. It must be XXX course only. That's why I suspect it was made only to provide backward compatibility with old system.
Hm. How can I set image tags like "confident"+"SFW" for schools? Or you can't do it in json without moar coding?
We used fields like "imageTags": ["maid", "cleaning", "cooking", "bunny", "waitress"]. I suspect it means any of these tags, even with nudity.
"noImageTags": ["sex"]
to exclude tags you do not want."imageMode": "normal"
for lookup mode, options are: types:
- normal = normal search behavior, try all tags first, then first tag + one of each tags taken from the end of taglist
- any = will try to find an image with any of the tags chosen at random
- first_default = will use first tag as a default instead of a profile and only than switch to profile
Xela, there is school_pyt in you db. It's alpha of new schools that refuses to work, most likely because I used fields for images tags as you advised.
Since Thewlis never mentioned them, I figured tags are your part after all.
I fixed and reuploaded all my packs with untagged images. You can just delete them if you don't want to download again, it's not a big deal.
Also I added text color for elements, like "font_color": "mediumslateblue". I can't test it of course until you use it in be log.
Xela, there is school_pyt in you db. It's alpha of new schools that refuses to work, most likely because I used fields for images tags as you advised.
Since Thewlis never mentioned them, I figured tags are your part after all.
"Kunoichi": {
"desc": "Thiscoursefocusesontrainingattackandagility.Mayalsoimproveexploration.",
"imageTags": [
"ninja",
"battle",
"exercising"
],
"noImageTags": [
"rest",
"sex",
"nude"
],
"primary": [
"attack",
"agility"
],
"secondary": [
"exploration"
]
},
"Kunoichi": {
"desc": "Thiscoursefocusesontrainingattackandagility.Mayalsoimproveexploration.",
"imageTags": [
"sfx",
"ninja",
"battle",
"exercising"
],
"primary": [
"attack",
"agility"
],
"secondary": [
"exploration"
]
},
While running game code:...
File "game/library/screens/pyt - screens - nextday.rpy", line 12, in script
python:
File "game/library/screens/pyt - screens - nextday.rpy", line 167, in <module>
TrainingJob(choice(girls), school, girls)
File "game/library/classes - jobs.rpy", line 3024, in __init__
self.do_course(self.course.doNum)
File "game/library/classes - jobs.rpy", line 3264, in do_course
self.girl.stats.max[statmod] += 1
KeyError: u'dancing'
The very same error that was before Thewlis "fixed" schools. I conclude that he did not test the code.
"skillPrimary": [These are ranges in school json. Primary skills should get from 10 to 50. Secondary from 4 to 25.
10,
50
],
"skillSecondary": [
4,
25
if self.girl.stats.is_skill(statmod):
setattr(self.girl, statmod.capitalize(), 2) # Training
setattr(self.girl, statmod.lower(), 1) # Action
# Self primarybut I don't see them working.
self.course.primary(self.girl, random=(1,20), chance=self.girl.AP*2, mult=self.course.get_scaling(self.girl), girlmod=self.girlmod)
# Self secondary
self.course.secondary(self.girl, random=(1,10), chance=self.girl.AP, mult=self.course.get_scaling(self.girl), girlmod=self.girlmod)
I expect that it was, it would not be hard to add a
"random_images": [1, 2, n...]
or
"folder": "path"
to it if needs be.
understood so if I add the random chars i need to make a rchar folder if not than i'm good correct.You need at least 1 random character.
also is the rchar subfolder to char or is it a content subfolder like charIt's a content subfolder like char
Xela, you need to document new fields for class traits. I want to know what exactly I do there, not just guess :)
understood so if I add the random chars i need to make a rchar folder if not than i'm good correct.This is what the structure should look like (folders with pics in the same folder as data_xxx.json files):
also is the rchar subfolder to char or is it a content subfolder like char
Xela, you need to document new fields for class traits. I want to know what exactly I do there, not just guess :)
I'm sorry, but an uncaught exception occurred.[/font][/size]
While running game code:
File "game/script.rpy", line 110, in script
python:
File "game/script.rpy", line 120, in <module>
rchar = load_random_characters()
File "game/library/functions.rpy", line 314, in load_random_characters
for fn in os.listdir(os.sep.join([dir, packfolder, folder])):
WindowsError: [Error 3] The system cannot find the path specified: u'C:\\Users\\owner\\Desktop\\Development\\renpy-6.18.3-sdk\\PyTFall/game\\content/rchars\\random_classes\\Adventurer\\*.*'
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 110, in script
python:
File "C:\Users\owner\Desktop\Development\renpy-6.18.3-sdk\renpy\ast.py", line 785, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "C:\Users\owner\Desktop\Development\renpy-6.18.3-sdk\renpy\python.py", line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 120, in <module>
rchar = load_random_characters()
File "game/library/functions.rpy", line 314, in load_random_characters
for fn in os.listdir(os.sep.join([dir, packfolder, folder])):
WindowsError: [Error 3] The system cannot find the path specified: u'C:\\Users\\owner\\Desktop\\Development\\renpy-6.18.3-sdk\\PyTFall/game\\content/rchars\\random_classes\\Adventurer\\*.*'
Windows-Vista-6.0.6002-SP2
Ren'Py 6.18.3.761
PyTFall 0.51 Slaver's Bay
don't know I got a trace error that kept asking for the map.png and a tileset call map
- Can poison be absorbed?
- How to affect power of healing? "el_damage": {"healing": 0.5}?
- I still can't see options to transfer items to a storage, even after buying a house.
It should increase the healing power of the individual with such an elemental trait (at the moment, I am planning to recode it so it can be any trait) by 50%.Well, yeah, I gonna use it for class traits, so it should not be elementals only.
Same icon used for transferring items between individuals, a sack appears in the top strip.I see the sack icon in girl profile, yeah, and I can use it to transfer items with the current girl only. There is no such an icon in other places.
Well, yeah, I gonna use it for class traits, so it should not be elementals only.
I see the sack icon in girl profile, yeah, and I can use it to transfer items with the current girl only. There is no such an icon in other places.
Should I still use fields like "element": "Air" for unique or "elements": {"Air": 80} for random girls? Or it's better to set them like normal traits?
??? Wait a second is that Ike??
I want to use two animations for SimpleMagicalAttack, one after another. Either I need to combine them somehow into one, or just show one after another. How can I do it?
Looks good, but I think it might be hard to read white items names on white panels. For girls names I'd prefer more contrast as well.
Looks good, but I think it might be hard to read white items names on white panels. For girls names I'd prefer more contrast as well.
It's very easy, you just need to define new image, in the default Ren'Py way. No tricks, no advanced coding.
image electricity_4:
FilmStrip('content/gfx/be/filmstrips/electricity_4.png', (192, 192), (5, 3), 0.04, loop=False)
FilmStrip('content/gfx/be/filmstrips/electricity_4_1.png', (192, 192), (5, 5), 0.04, loop=False)
I think P2P_MagicAttack does not support zoom or td_gfx for shaking. I can zoom during defining, but the lack of shacking is really bad :(
Btw I just tried
I don't know why, but the second animation does not work. Pause time is correct.
image ion:
"electricity_4" # OR FilmStrip(*args, **kwrags) if you never defined the image and do not want to.
# atl instructions if applicable:
rotate 90
# pause for animation time:
2.0
"electricity_4_1" # <== Next displayable after the pause
zoom 2.0 # <== Moar ATL instructions
2.0 # You can also write: pause 2.0, same thing. NOTE: This is NOT renpy.pause. It just delays execution of atl instruction or rendering the next displayable! (so it will never pause the game like pause you define when creating a spell does)
image vortex:
FilmStrip('content/gfx/be/filmstrips/vortex.png', (192, 192), (5, 28), 0.02, loop=False)
0.01
FilmStrip('content/gfx/be/filmstrips/vortex.png', (192, 192), (5, 28), 0.02, loop=False, reverse=True)
Sadly no, still only one animation. I even tried it with the same image, like
image vortex:
FilmStrip('content/gfx/be/filmstrips/vortex.png', (192, 192), (5, 28), 0.02, loop=False)
2.8
FilmStrip('content/gfx/be/filmstrips/vortex.png', (192, 192), (5, 28), 0.02, loop=False, reverse=True)
2.8
How to heal all characters in party? In terms of animation, of course.
type="all_allies"
It will target all allies in the party.There is one option that I want for a long time, but keep forgetting about it. We have location and force_location fields in girls data files. I propose to automatically add to our testing brothel girls with "player" location. Much faster than typing commands in console every time.
How about this version? Still need to refine for girls frames, but later.Hi again :D
(http://s23.postimg.org/hdvt8f97r/image.png) (http://postimg.org/image/hdvt8f97r/) (http://s23.postimg.org/i202dmijr/image.png) (http://postimg.org/image/i202dmijr/)
I forgot to tell you that in the first picture, there are a little error in the name of character and his picture.This is a mistake in my old Girlpacks.
Look at the top left between Hinata and Nico , the name of Tenten and the picture who is not Tenten but Ino Yamanaka...
Finally finished one of those huge random girlspacks. 1500 pics/317MB :o
how does she feel.
Summing up, moar coding is needed, so if you Xela still not sure how to code classes and brothels, you can help with ST too ;)
Yeah, that's what we should care about... slaves feelings about stuff...You can ask characters about it in pretty much any ST game, including wm, because you can't directly see any hidden stats behind characters "feelings". If you suddenly think that we don't need even basic interactions with characters or hidden stats, think again.
- I think if you read through all of his comments and posts in ST thread, there already should be a reward/punishment/training matrix for the MC (through interactions menu, taking training sessions from JSON, they were called one-off trainings or something like that).I tried, it's very confusing, especially since he often uses terms from the game code I have no idea about. He also uses terms and theoretical descriptions without working examples in training_example_json.
My proposals were rejected by you and lamoliNo, that never happened. I was so busy with some other module (can't remember which one) that almost didn't paid attention to your discussions. And even after Thewlis coded stuff I still was busy back then. Just because he coded it similar to JoNT doesn't mean that this is how it will work. The main thing that he coded is hidden traits + flags for them. We just need to move all settings into json and improve the system. After that pretty much any ST system can be build based on them.
Pushed better lines for gifts. No thanks to literally dozens of so called "writers" who instantly run away at the mere mention of them for a whole year, lol. I would added a sarcastic picture here, but my avatar is more than enough in this case.
Now I want to change how gifts work. Currently, when gifts are tied to traits and occupations, every time we add a trait, a class trait or a gift, we need to analyse all gifts and traits again. That's a lot of work, and there will be more as long as we add moar stuff.
Instead I want to use numerical values showing gift's purpose and application. Some gifts are more practical, others are more like for decoration, also there are food and drinks, etc.
So every trait will have propensity to one or more types of gifts. Sum of all propensities will show us what gifts a girl likes or dislikes.
also, the intro is pretty awesome. though one of the transition screens was showing the checker pattern (alpha background?), maybe I'm missing an all-white or all-black pic? not sure.It's only visible in the dev mode. The screen is black in normal one.
Nothing I can do until someone will code something new. Back to packs, I guess.
Nothing I can do until someone will code something new. Back to packs, I guess.
So, does this mean that some of the interface is still under construction? I noticed a few places that will blow up the game. (the tavern, some of the developer options)Xela and Thewlis are supposed to code classes and slave training right now, but they are busy. The tavern was added by Cherry, but he doesn't know what to add there.
and it looks like the GT menus aren't in place yet. (either that, or I just can't figure out how to reach them. lol)
You could wrap up magic for example... some images are off and it's not too hard to create sounds for longer spells.First of all, many mass spells require another animation that is not supported by the current BE. I mean one big animation instead of 3 small ones.
First of all, many mass spells require another animation that is not supported by the current BE. I mean one big animation instead of 3 small ones.
Xela and Thewlis are supposed to code classes and slave training right now, but they are busy. The tavern was added by Cherry, but he doesn't know what to add there.
Currently we can only safely add quests, spells for BE, items and girls packs, anything else might change when they will finish coding.
Any spellcheck is welcomed, of course. We have many new lines, like spells for example (library\be\assets).
First of all, many mass spells require another animation that is not supported by the current BE. I mean one big animation instead of 3 small ones.
They will still need images and sounds.I have no idea what do you mean by "images" here. I suppose you mean animations and their position, but in this case when we'll change animations to massive ones, I'm sure I'll need to rework them anyway, no matter how perfect they are now.
I have no idea what do you mean by "images" here. I suppose you mean animations and their position, but in this case when we'll change animations to massive ones, I'm sure I'll need to rework them anyway, no matter how perfect they are now.
I mean one big, simple animation right in the center of enemies party. I can't believe something like that is very difficult. On the contrary, it should be easier since you don't need to get coordinates for every enemy, and just throw it in the center of their group every time, maybe +/- some pixels depending on animation.
I'm still waiting for your intro push ::)
I cannot really balance spells damage without mobs that have spells resistances and levels, and Xela didn't coded them yet. So I just randomly copy-pasted the same values for now.
There supposed to be standards in damage, aoe and low tier spells names, but I'm not sure yet which ones :)
Your ideas are as good as mine, I guess.
Piercing means that the spell can attack back row without the need to kill everyone in the front row for a start. True_pierce means that the spell will cause its full damage to the back row, without it it only causes 1/2 of its damage.
All-enemies will attack the whole front row (or the whole back row if the first row is dead) without piercing=true, and all enemies with piercing=true. Without it spell can only hit one target.
Ah ha. thank ya much.
Another question though, if the front row is dead, do spells continue to do 1/2 damage to back row? or is the back row then considered the front?
or is the 1/2 damage thing only for when piercing=True and there is still someone in the front?
I'm going to release another touhou pack with 5 characters, and then make some story scenes to use in the main quest. Assuming that ST or classes will not be ready by then.
What are you using for this?
I wonder what should we do with backgrounds. I suppose we could use backgroundless pictures together with ingame backgrounds, assuming that you can render them :)
Also there are non human packs, so there will be characters with unusual features like long ears, wings or hornes.
I'll prepear a special pack as a base for rendering.
I wonder what should we do with backgrounds. I suppose we could use backgroundless pictures together with ingame backgrounds, assuming that you can render them :)
Also there are non human packs, so there will be characters with unusual features like long ears, wings or hornes.
I'll prepear a special pack as a base for rendering.
This time with clothing.. next is HairI think the body should be a bit more shiny, like on the base picture.
I'll try to finish classes tomorrow, have the whole day set aside for coding for PyTFall.I think Thewlis was demoralized by the change of ST concept, judging by lack of pushes. I suppose it's up to you after all.
I think Thewlis was demoralized by the change of ST concept, judging by lack of pushes. I suppose it's up to you after all.
I think Thewlis was demoralized by the change of ST concept, judging by lack of pushes. I suppose it's up to you after all.
Instructions you gave him were too unclear... even I was a bit confused (and we talked about it in detail in chat).Nah, I asked him to improve his traits-flags system (developed and made by him) to support multiple flags, and one general screen to control ST from 1 place instead of wandering around the whole gui, like you have to currently. I can't possibly say it even simplier, maybe a native english speaker could... :D
Here i tryed the floor ( 1 color for tiles / 1 color between tiles or not / black freestyle line between tiles or not ) whats best ?? ( used noise/color ramp from blender for the effect )Tiles look awesome. I personally like those with black line.
For clothing im gona make more but wanted to know if something was really bad and need fixing..I just noticed thanks to the new background, her knees are square in that pose. Could you smooth them out?
If i provide training rendered picture will it motivate him ?? after all i was one of those who pushed the ST concept forward.. and id like to see it progressIdeally, we need unrecognisable pictures for various ST actions, since we cannot guarantee that a girl will have all pictures that we need. Naked and inside a training dungeon.
I just noticed thanks to the new background, her knees are square in that pose. Could you smooth them out?
Ideally, we need unrecognisable pictures for various ST actions, since we cannot guarantee that a girl will have all pictures that we need. Naked and inside a training dungeon.
But I'm not sure what is the best way to make them unrecognisable.
Yup, that should do it.
I have a question. Can you show muscularity if needed? I mean, there are characters, usually warriors, with very noticeable muscles.
I'm afraid we need a manual even for this :)
I have no idea how to block purple streams.
There was hyperdimension neptunia 2 released on pc. They have pretty interesting SE module there, with stuff like finding items, gaining temporary stats bonuses that work until you finish exploration, and of course battles with enemies behind the screen.
The part that I liked most is a detailed log that mentions every event. Even though you cannot interfere at all, it's still a cool thing.
Main issue is that the whole game was built around strings "Warrior", "ServiceGirl", "Prostitute" and "Stripper".Yeah, you have to rewrite most of the things that you coded first when we just started the project, pretty much like Cherry and me had to retag packs at least 2 times ;D
We will also prolly have to sacrifice some of current logic to have a better game in the future, but we'll discuss that in chat when time permits and we can all get together...I dropped chat lately since without coding progress we can only discuss pack making, and you are not even a pytfall pack maker :)
Yeah, you have to rewrite most of the things that you coded first when we just started the project, pretty much like Cherry and me had to retag packs at least 2 times ;D
I dropped chat lately since without coding progress we can only discuss pack making, and you are not even a pytfall pack maker :)
Let me know when there will be game logic to discuss.
Also, Thewlis hasn't been here for two weeks. I personally think that he dislikes how we change all concepts on the fly, making him to recode stuff.
Hm? You mean you can convert models from neptunia? Well, there are already two parts released on pc (and the third one probably will be closer to the fall), so there are tons of body parts and especially clothes that will be very useful for us.
For ninja suit, yeah, Kasumi suit shoes are suitable.
Of course even if i can find the 3D model its useless untill rework and it takes up to a few hour/clothes/body part/items to be reworked and adapted
Miko is done.. but the Yukata base is not a real Yukata.. its the Yukata short top with opened miko skirt ( purple ) and stockings+boots..I'm afraid I don't know much about yukatas :)
After I bumped into doubles in my old packs, I found an awesome software that can search for similar and identical images. Can't believe I never thought about it before :)I'm also using awesome software for that, "Awesome Photo Finder" :D is that it?
you should see the dress detail.. and let me know if its ok.That website is down, and not only for me. I'll try to take a look later.
I'm also using awesome software for that, "Awesome Photo Finder" :D is that it?The first one that I found in google was visipics :)
"occupations": []
"higher_tiers": []
This is for SubClasses, should contain main class(es). Like Mage would be a main class for Alchemist. class Trait(_object):
def __init__(self):
self.desc = ''
self.icon = None
self.hidden = False
self.mod = dict()
self.max = dict()
self.min = dict()
self.blocks = list()
self.effects = list()
# Occupations related:
self.occupations = list() # So far I came up with SIW (Sex Industry worker), Server, Warrior...
self.higher_tiers = list() # Required higher tier basetraits to enable this trait.
self.sex = "female" # Untill we set this up in traits: this should be "unisex" by default.
# Types:
self.type = "" # Specific type if specified.
self.basetrait = False
self.personality = False
self.race = False
self.breasts = False
self.body = False
self.elemental = False
self.add_beskills = list()
# Elemental:
self.font_color = None
self.resist = list()
self.el_name = ""
self.el_absorbs = dict() # Pure ratio, NOT a modificator to a multiplier like for dicts below.
self.el_damage = dict()
self.el_defence = dict()
self.el_special = dict()
# Weaponfocus:
self.we_damage = dict()
self.we_defence = dict()
self.we_special = dict()
# Base mods on init:
self.init_mod = dict() # Mod value setting
self.init_lvlmax = dict() # Mod value setting
self.init_max = dict() # Mod value setting
self.init_skills = dict() # {skill: [actions, training]}
self.leveling_stats = dict() # {stat: [lvl_max, max **as mod values]}
def build_rc(id=None, name=None, last_name=None, pattern=None, level=1, add_to_gameworld=True):
'''
Creates a random character!
id: id to choose from the rchar dictionary that holds rGirl loading data from JSON files, will be chosen at random if none availible.
name: (String) Name for a girl to use. If None one will be chosen from randomNames file!
last_name: Same thing only for last name :)
pattern: Pattern to use when creating the character! (Options atm: Warrior, ServiceGirl, Prostitute, Stripper) If None, we use data or normalize in init()
level: Level of the character...
add_to_gameworld: Adds to characters dictionary, should always be True unless character is created not to participate in the game world...
'''
So the difference between class and subclass is that a girl can get a class only is the beginning, as a part of permanent group?
{"id": "Samurai",
"desc": "Unique description for Samurai",
"is_trait": "Warrior"
}
should i make stockings above the knee like original or a sock below the knee ?I think it should be above the knee. I've seen a lot of nnja pictures, and most of them have it above.
Hm, I don't understand the meaning of higher_tiers system, especially since characters can start with two subclasses and without classes.
Dark can you please make a selection of outfits there..Ok. That will take some time, I'll do it tomorrow.
I am going to work on Mobs, Skills and maybe Jobs tonight so I'll be around the forum and chatroom in about an hour if you have questions. I am still not sure how to bind this system to Jobs properly and how to handle certain things like auto-equipment when we add loads more jobs and buildings... I'd prefer a system that allows expansion with minimum effort.No more questions yet... I caught a cold, so I'm going to bed early today.
I suppose auto equipment system could be based on classes traits only. And in case if only subclasses are permanent, well, they do have high tier classes anyway.
If we use too many values as a base for AE system, it will become too complex and unfocused.
Auto-Equipment system needs to be job oriented... so we'll prolly have to either create a sub-trait for every job and draw from that or create a list of corresponding stats and skills for every job. Prolly the latter or maybe even a combination of two.Are you sure about it? Classes show character's main profession already. Just because you can set them to another job and even obtain new subclasses, main profession won't change. AE is not obliged to be perfectly logical, just like auto buying system.
Decent models... I still think this can make good random packs but mixing 3D render with drawings will prolly look awkward, well live and see.
Well lots if not all recent anime are full 3D and you cant see the difference but i do agree on the fact that to get closer to artists drawings i would require more work so my renders looks like 2D ( im not even at the anime lvl atm ) but they do it so its possible..
Are you sure about it?
Alright maybe they integrate drawn characters into the 3D rendered BG but theres the lighting effect cast on those character as well..
but why bother drawing by hand if all can be done in 3D
https://www.youtube.com/watch?v=PiR7KYIQv9U
Of course that sample could be improved to look even more like the original..
My goal here is not to make anime.. its to find a good integration of 3d renders into 2D BG and if its not working well ill render the BG in 3D but need a lot of practice to make it look 2D like..
Since im not good at 2D drawing and artists only make only a few drawings of a specific girl.. the only way to get everything ( poses/outfits/expressions ) is to transform that character in 3D so proportions stays the same in any pose/angle that way we get all we need.. and if you want even better just rework my render with a program like Photoshop/Gimp and edit it like a real 2D artist.. but most of the job would be done by the 3D render..
No, that just made sense to me :) Just feels like auto-equip should be job/task oriented...I'm not sure. If we make a perfect AE that already uses best possible equipment depending on stats and skills needed for the current job, then full access to equipment (for lovers and slaves) will be almost useless. Because items are already the best, and they even change when job changes.
I'm not sure. If we make a perfect AE that already uses best possible equipment depending on stats and skills needed for the current job, then full access to equipment (for lovers and slaves) will be almost useless. Because items are already the best, and they even change when job changes.
Thus any possible manual changes will only make things worse.
Yeap, I am also very curios how much of this can be made in a "factory" format (where you can just load the new sprites with few adjustments instead of doing a lot of work for every single render)... This opens a lot of possibilities like Equipment Dolls and/or Exploration Sprites. We don't have the time or manpower for that right now but in the future, when the game is advanced enough, we can revive the subject or even make a different game :)
For now if we get a couple of decent Random Packs out of it, it'll be super!
Dark can you please make a selection of outfits there..http://armachamcorp.deviantart.com/art/Gunslinger-Stratos-Reloaded-Kyoka-Katagiri-522939873?q=gallery%3AArmachamCorp%2F43152968&qo=0
I don't think that is possible to make in any decent time, but we should at least get it to make sense.One of the ways to make characters unique is to give them unique preferences in clothing. In case when all guards wear the best available in shops armor there is no uniqueness.
Ok maybe i can do better but for now i guess this will do.. so i will continue to make new clothing from those you linked..
In the past i think i asked if it was possible to get a equipment GUI that looks like Otherworld ( girl body with clothing/armor/items on her ) and you said too much items to make.. but i think now with my system its really easy to do it..
1. nude girl with 3 or more different base pose.. ( would reflect state of mind like afraid/against/proud.. normal.. horny )
2. i can model every clothing in existing game from 2D to 3D then fit it on the girl ( i like to see her with the dress/armor/items i put on her )
3. separate every piece of clothing set im modeling so everyone can mix them with others..
It will change nothing in the current equipment system.. it only adds a graphical side to it.. if its fine by you i could render those 3 poses and some stuff from current game and see how it goes..
Edit:
Also it could upgrade slave market graphics as well.. like girls on podium with different clothing.. we could even add a inspect function where you could se girl from different angles ( really easy to make those renders ) or even put some clothing you got in MC inventory to see if they look good on her.. ( if i model every ctiem/clothing/armor in game it will be no problem at all )
I could also use this to render sprites for the fights ( with the real gear your wearing ) and even fighting poses like to hit with sword or bow or even cast spells
Yeap, I am also very curios how much of this can be made in a "factory" format (where you can just load the new sprites with few adjustments instead of doing a lot of work for every single render)... This opens a lot of possibilities like Equipment Dolls and/or Exploration Sprites. We don't have the time or manpower for that right now but in the future, when the game is advanced enough, we can revive the subject or even make a different game :)
For now if we get a couple of decent Random Packs out of it, it'll be super!
We may want a default battle sprite, i didn't come along a good one yet...
PS: You can slowly start working on basetraits and mobs, system might have to be expanded but we need new traits for jobs to work properly and mobs to be interesting. We also (imo) should rename all spells back to FF standards and full names for unique once. Current way of naming is very confusing. There are also a couple images missing and one of the sound files...I tell you what is confusing. It's battle gui that provides no sorting or info about spells except descriptions and names.
+ A lot of sounds are off.
I tell you what is confusing. It's battle gui that provides no sorting or info about spells except descriptions and names.
If we'll have sorting by element and order spells from weak to strong there, names already will be almost meaningless.
As for gui, I mean something like this (https://www.dropbox.com/s/qchmdqfx4e7knq0/1.png?dl=0) (I'm not an artist at all ::) ). When you select an element, you see list of spells sorted by spell power (we even have it in spells properties, it's effect value).
Even this already will be more intuitive and will take less place in BE gui. And I'm sure Gismo will make even a better one :)
I'll start to work on classes then (half of Touhou pack #2 is ready, but it will wait for another coding pause).
Difference between warriors and mages is usually vulnerability to non magic attacks. Mages usually cannot wear heavy armor, and in our case they don't even have any protective spells, yet at least. Thus warriors have to protect them while they destroy enemies.
And as usual, strong techniques use more than less weak and with each turn restores a certain number.
We'll prolly add it but there are many spells that will not become "aim-at-the-middle" that need luv right now.You see, I have no idea which spells will be mass. I'm going to take a look at almost every spell in "aim-at-the-middle" mode and then decide which spells will become mass ones depending on how they will look.
You see, I have no idea which spells will be mass. I'm going to take a look at almost every spell in "aim-at-the-middle" mode and then decide which spells will become mass ones depending on how they will look.
Btw, shouldn't we decide what jobs we'll have before I make subclasses, since they are pretty close to jobs? Or you will code jobs for any subclasses that I'll make? :)
https://mon-partage.fr/f/gbkHGLGQ/ (https://mon-partage.fr/f/gbkHGLGQ/)
Test on 69 action.. only global lighting no real light that cast shadow for this test.. so it could be brighter if needed..
Tested a texture on body.. instead of 1 color like before ( i hope its still anime like )
Test on 69 action..Looks very good.
Damn... that pretty much kills the potential of on map fighting :(I'm not sure I understand what kind of BE you also consider. Do you mean tiles based battle system like Kamidori or what? Because I cannot see how is it even possible to use any kinds of rows or groups there.
Ok but on reference i used from base actions Dark provided that sample ( 69f.jpg ) we see both faces.. is it an error ??I also said that ideally partner should be unrecognizable. Unfortunately, it's hard as hell to find such pictures, especially for lesbian stuff.
I'm not sure I understand what kind of BE you also consider. Do you mean tiles based battle system like Kamidori or what? Because I cannot see how is it even possible to use any kinds of rows or groups there.
Oh, you did not take any steps to code it
and even coded another BE instead, so I figured you abandoned it.
Well, very good random maps generator is a must, and battles there most likely will be much longer, thus possibly boring.
Btw I wonder, do they have tongues for licking stuff? :)
https://mon-partage.fr/f/gmwIuK5L/ (https://mon-partage.fr/f/gmwIuK5L/)
Yes everything in the mouth as well.. ( teeth are too realistic for anime so i usually put a plane before them )
The file is corrupted.
It hurts me when you say stuff like that :)I mean to code it instead of our current BE.
Where did you took that tiles BE concept from, btw? FF tactics maybe?
Is the new 69 action alright now ??
@Dark:
When testing, especially if you're going to train character in schools, please note that skills system is messed up there right now. I've fixed it in my version but it's a part of file that if upload right now would kill any chance of testing anything at all :) *So I cannot push the fix.
Weird... according to code, any job except FG should mess skills up (it may not be noticeable at low levels, maybe noone tested high skills yet)... either noone tested it for a while or there is something I am missing.I tested skills a month ago when I made new schools. There wasn't any abnormalities during training.
But since noone seemed interested except for me, I abandoned the concept.I think I'm the most experienced player in the dev team, when we talk about non hentai/VN games at least.
before my recent update the skill would reset to 0 if i train it either by using trainers or doing it myself ( interactions )
and about skill.. if i want to see them in the game i get error msg..
69FM test
I like the hair :)
https://mon-partage.fr/f/yRiZN2Pi/ (https://mon-partage.fr/f/yRiZN2Pi/)
Hmm is it alright if we see the bottom half of the face ? ( to see the possible evil smile.. )
I have doubts about sex skills. Things like handjob/footjob are not compatible with anal/oral/vaginal skills set, on the other hand we cannot guarantee that every pack has them.
Perhaps we could rename oral somehow to include everything there...
Wait a sec. Don't occupation and type fields do the same thing? Warrior class has warrior occupation and combat type, prostitute class has SIW occupation and sex type.
Just show the full face pls, we may want to put it infront of some BG at some point. It's ok, I shouldn't have mentioned the other girl thing :)
Does anyone has ideas/requests for Building/Jobs logic btw? I have parts of that down already so if there is something, lets hear it.
Buildings...
Do we need rooms for free girls? Shouldn't they all have their own rooms somewhere in the city, like irl?
And for characters with high disposition there will be MC house. Living rooms should only limit the amount of slaves you can use in the building. So if you are not going to use slaves, you can live without living rooms at all.
Total amount of workers in the building should be limited by size of the building itself and upgrades.
Also, I think it's a good idea to limit jobs by upgrades. I mean, every job except guards and cleaners should require an upgrade for a start. Like cafe for waitresses or stage for strippers.
I have doubts about sex skills. Things like handjob/footjob are not compatible with anal/oral/vaginal skills set, on the other hand we cannot guarantee that every pack has them.
Perhaps we could rename oral somehow to include everything there...
Also, I'm not sure what to do with advertising. Initially, in the very beginning of the project, we wanted to hire unemployed (by MC at least) city girls to do it as a part time job. Another option is to make a full job for it.
Hm, I like more those with diffuse.
Hm, I like more those with diffuse.
About classes like SIW Manager, aren't they an overkill? That means 3-4 new jobs to manage everyone, and might require new super specific skills like SIW managment.
I made a very simple application to show the classes tree I come up with, here (https://www.dropbox.com/s/bs3jtwhibveaulz/Project1.exe?dl=0).
Service and Managers are almost opposites of one another. They are not a very good fit in one category.The problem with managers is that you need one per building at best, or something like that. Unlike other main classes, when you could make a brothel, a bar, or use SE and arena a lot.
Erase girls from BG? You mean, delete backgrounds or what?
Cherry and me did it countless times for sprites.
No the opposite.. recreate the BG on top of the girl.. even if its not in total.. it should be fine.. as i get a hard time covering the original character with the new one..No, this is too much. You need a real artist for that.
Yup. blur looks very good. We could use rooms like that.
XELA, ARE YOU ALIVE THERE? I know you are by your last active time :D
We need healer class for many characters, thus we need bonus to healing magic in class traits.
I don't remember if any trait can modify magic output, or those with "elemental": true only. I think only elemental ones.
So:
- would be cool to have el_damage and el_defence for classes traits as well if it's not available yet;
- strings like "el_damage": {"heal": 0.5} should make healing made by the character stronger, strings like "el_defence": {"heal": 0.2} should make the character less susceptible to healing. And vice versa for negative values.
def effects_resolver(self, targets):
if not isinstance(targets, (list, tuple, set)):
targets = [targets]
chr = self.source
attributes = self.attributes
restore = self.effect + (chr.intelligence + chr.magic) * 0.25
for t in targets:
if not self.check_resistance(t):
# We get the mupliplier and any effects that those may bring.
effects, multiplier = self.get_attributes_multiplier(t, attributes)
restore = int(restore*multiplier)
else: # resisted
damage = 0
effects = list()
effects.append("resisted")
effects.insert(0, restore)
t.beeffects = effects
# String for the log:
# String for the log:
s = list()
s.append("%s used %s to restore HP of %s!" % (chr.nickname, self.name, t.name))
s = s + self.effects_for_string(t, default_color="green")
battle.log.append("".join(s))
Looks good. I still have hope that we'll find or make a global map of some kind with all types of terrains though. Something like that (http://lothrean.deviantart.com/art/Grimstahl-Map-331993929), but obviously we need more terrains.
Hmm i spend too much time trying to find out what to model in the scene.. it would be best if someones could come with buildings interiors concept arts.. then from there ill do my modeling/rendering part..Do you have access to our shared dropbox folder? I have dozens various backgrounds there. We might even use some of them instead of rendering if it looks good enough.
As for the outside world i can make something really good but ill have to see if it blends with the girls im making i could do a map like you linked with different biospheres and as we add more places somewhere in the map..Before we try it, we need to know exactly how good it will look and how much time will take. I suppose a map with dozens small details should be much harder to render than more or less similar girls bodies.
When I worked on the city map, I considered creating a more extensive maps of regions in the future.I can tell you what could be improved. You used monochromatic, simple textures for ground surface. If you look at my example, ground textures are more complex there, thus more realistic. Grass is green there too, but there are places with lighter and darker grass.
Do you have access to our shared dropbox folder? I have dozens various backgrounds there. We might even use some of them instead of rendering if it looks good enough.
I can tell you what could be improved. You used monochromatic, simple textures for ground surface. If you look at my example, ground textures are more complex there, thus more realistic. Grass is green there too, but there are places with lighter and darker grass.
Hmm dont know if i have..Well, if you have dropbox installed and PyTFall folder there then yes, otherwise no :D
Like for the onsen.. sitting on the border of the water.. or sitting inside the water.. walking around in a towel.. rinsing herself in front of mirror.. and so on. ( if you find picture of those actions it would be helpful to make the poses.. else i think we could use some anime as reference and take screen captures of what we need )I think this (https://www.dropbox.com/s/3av8d6vk1tpcbza/002A-nd-e2-ec-c8-l6-a2.jpg?dl=0) is one of the best bathing onsen pictures, if you ignore a plate with sake in her right hand. Other than that, onsen bg could be used for sex poses like any other bg.
Of course its just planes defining the rough shape.. the finished version will come soon.. but wanted your OK on focal..Yeap, looks very good.
Yup, I want to finish tagging of one character from the second touhou pack really quick, and then I'll write mobs classes.
What is the field to show if the class should be used at front or back row, again?
{
"name": "King Slime",
"desc": "King of all slimy things.",
"front_row": 0,
"battle_sprite": "content/npc/mobs/a.png",
"portrait": "content/npc/mobs/a1.png",
"origin": "Vile puddle of filth.",
"base_race": "Slimes",
"race": "Slimes",
"locations": [],
"basetraits": ["Mage"],
"stats": {
"attack": 20,
"defence": 50,
"magic": 30,
"agility": 40,
"luck": 10,
"charisma": 40
},
"skills": {
},
"traits": [
],
"attack_skills": ["FistAttack"],
"magic_skills": ["Water ☆☆", "Water ★★★"]
},
**This should load into the game properly (I think) :)Your example lacks elements. Can I just add them to the traits field?
Your example lacks elements. Can I just add them to the traits field?
I'm gonna add min_lvl field to mobs. Not sure how exactly we'll use it, there are several ways to do it. For example actual min possible level for mob, or min level of the area where you can find the mob, etc.
Looks ok, quality is poor but I suppose that is what you meant with "Quick renders" or maybe it's just the monitor I am on atm.
Xela, are you ok with fire☆ names btw?
Lol no, we need to decide something already. One thing is to rename them once in battle assets, but I'm about to use them in mobs json.
My approach (tactics-wise) would be:You forgot about closest row, ie all without any kind of pierce. It will make all 4 basic spells truly unique and yet useful.
Maybe Row/all are too powerful..Mass spells will be weaker to avoid it. Or rare and expensive.
Just for example, the names in order of increasing strength element. For the first four spells.The problem is that we have many spells already, like 7-9 per element. If we sort spells by power form the weakest to the most powerful, stuff like meteors will be the last one, not the fourth one.
To clarify why I'm against fira stuff: it's a shameless rip-off, and an easily noticeable one. Even worse, while we obviosly have no choice but to use sounds and pictures made by someone else, spells names are clearly an overkill in this regard. It's almost like to call the game Final Fantasy: Pytfall Chronicles.
You forgot about closest row, ie all without any kind of pierce. It will make all 4 basic spells truly unique and yet useful.
In any case, I think that you're way off-base here with your argument... I can understand you simply not liking the names but "us not being original" statement weird me out a little bit all other game elements considered.Ah, but we use multiple sources for everything we have. Characters, items, mobs, dialogues, animations. Even our elements system is based on Golden Sun, Naruto and Neverwinter Nights. Not to mention traits and stats/skills from multiple h-games.
Nah, we can make a separate file with spells names tied to ids. And have two versions, with fira stuff and with unique names.
If you know another that contain those things.. let me know.Hm... The last ones I watched are No Game No Life and Persona The Movie (really hard to find second Persona part, even at torrents). I wanted to make Zero no Tsukaima pack recently, but surprisingly characters don't have enough pictures. It could be our first rendered unique pack.
As renders takes time i got time to watch those and maybe get some ideas from them.
I tried to portray my ideas about the magic system. Use everything you deem interesting.I will. But we are not ready for debuffs and multielemental spells yet.
Does it look close enough to the real thing.. and if not tell me whats wrong..I think eyebrows are way too thick. No more complaints from me.
@Lamoli: Naruto Shippuden Ultimate Ninja Storm 3 has better models of naruto girls, even simpler mmd models are a bit prettier. Maybe I misunderstood you when you said you just needed a decent 3D source to rip from but if that was true, you can prolly try some other options.
Most widely used are these once I think but there are many on youtube. Some add sources to the info, some don't. Their One Piece models are quite good as well. I've also seen some excellent models when I did some research couple of month ago but they either are now dead or I've lost them (will take another look when I get to Laptop).
Nope, not really. Why Sakura anyway? She is an extremely popular character with thousands qualitative pictures.
Ermmm.. i had a Sakura pack but its gone.. can you link me the most recent you have.. and tell me the missing actions like for ST where some might be missing ( or need render as the image is so ugly everyone would delete it )
and tell me the missing actions like for ST where some might be missing ( or need render as the image is so ugly everyone would delete it )I can't say for sure, since our coders so far avoid coding ST system that I need :D
It's better but the hair needs to be renders not like it's one single texture. I like a lot more than the v0 option from before :)
But does the Sakura face model is good enough to be transformed into the pose able one ?
I just downloaded your new pushes. Mobs are acting weird, Nami as a mage at level 52 kills 3 goblins at level 100+ with half a spell. I'll look into allowing to view mobs stats at different levels when I get a chance, but I don't know how to push that without breaking old jobs (unless dev team would no mind game to be without jobs for a while).Do we even have a magic resistance of any kind, apart from elemental traits? I personally want something like defence/3 + (intelligence+magic)/2. Or simply (int+defence)/2.
But for now i guess its the random girls packs that needs renders.. ( 9 clothes for them might be too short.. i might need more examples.. )Apart from specific clothes like maid every character needs casual clothes that will be used in most cases. You can use any clothes you like, or I can find a couple examples.
I'm afraid we will need more than that. Different mobs obviously have different size. Like goblin and dragon. We might need 3 sizes, like girls already have.
Top left corner is a bad idea anyway, it should be bottom one.
I mostly use the game to test packs, and I'll need about 2 weeks after mobs will be done to finish another one.
https://mon-partage.fr/f/tMifsxzE/ (https://mon-partage.fr/f/tMifsxzE/)
Hmm i guess.. who it is.. ( only preview no real render to check things out )
Might need to lower back-top hair and make the back-bottom layer 1/2 more wild..
Let me know if something need to be changer before i make a morph out of it.. ( only face/hair matters body will be trashed )
Of course end result shape will be the same but with more realistic nose/mouth ( more like base Sakura ) skin will be closer to latest Sakura as well
Edit:
Hmm face is too round ( like younger version of her ) might need to stretch it
Part 1 is done. I added more base attacks and made pictures for all existing attacks (those pictures of hitting that appear and slowly disappear when you attack).
Also restored FF names for base spells. Screw it, I rather add more new spells than waste my imagination to come up with alternative names for weakest spells in the game.
I know that sounds for new attacks need editing, I don't have that software on my laptop so I'll do it later at home.
Can anyone provide me with BDSM rope knot types?...I can only propose to google "BDSM rope knot types" :)
Improving tagger =/= packs making. Besides, I can't think of any possible new content except cutscenes at this point of coding. I can add items and traits indefinitely, but it's no better than making packs.
if dice(int(round(hero.charisma*0.5))):are not supposed to work after refinement became skill, then crashes are not surprising.
$ chr.refinement += 1
I really could use actual bugs reports for a change instead of vague "some things there crashed the game" :D
Many GMs were made not by me, but by Cherry, you and even other coders, like rts function. Especially rts function, since it works with both traits and occupations. Anything based on occupations must be one big crash now, when you rewrite classes stuff. I can fix checks, but not functions.
Also, if strings likeare not supposed to work after refinement became skill, then crashes are not surprising.
About storyline, I wanted to move along our previous agreement about time temple, time magic resurrection and stuff. But it's pointless after you decided to remove it from the game, so I am at a loss how to build the story now.
elif co("Prostitute"):so you could just rewrite that co function to work differently. Rts function uses co function too, so we only need a new co, I believe.
I'm looking at made not by me parts of girlmeets now, and I see many occupations checks. I suppose we need to replace them based on "occupations" field that every class trait has. Mostly there used lines like so you could just rewrite that co function to work differently. Rts function uses co function too, so we only need a new co, I believe.
if dice(int(round(hero.charisma*0.5)))string means?
if chr.status != "slave"still correct?
While running game code:
File "game/script.rpy", line 243, in script call
call testing
File "game/library/testing.rpy", line 2, in script
python:
File "game/library/testing.rpy", line 16, in <module>
testBrothel.upgrades['stripclub']['1']['active'] = True
KeyError: 'stripclub'
- Finally, I can't test stuff because
What string means?
Are strings like still correct?
- Since we use permanent traits as occupations, that interaction #8 in GM - chat.rpy where you ask a girl to change occupation cannot be used anymore in its current condition. If you want to rewrite it somehow to work with non permanent classes traits, go ahead. Otherwise I'll delete it (probably the best option, it's too simple to change even non permanent class via one dialogue).
- GM - go out.rpy contains Cherry's basic developments for dates in real time. I'm not sure how to build dates system (there are many ways), but that file is not enough to make something based on it. Just ignore it for now.
- In GM - proposition.rpy the label #3 handles hiring heavily based on occupations, giving an error for unknown ones. I fixed it for now based on existing occupations types, but it will give us more headache in the future. It should be changed to be based on level and social status (I don't know how :D ).
- Finally, I can't test stuff because
It's a line of code, I didn't find one declared as string (str(), "", '') but all it does is dividing mcs charisma by 2 and running dice function with a resultI know what dice is. And I figured that round rounds it. I don't know what int part does.
I don't know what int part does.
Btw can you actually use dice x out of y somehow?
randint(1, 6)
File "game/library/interactions/GM - chat.rpy", line 267, in script
if co('Warrior'):
File "game/library/interactions/GM - chat.rpy", line 267, in <module>
if co('Warrior'):
File "game/library/interactions/function - interactions (GM).rpy", line 66, in co
return ct(list(args))
File "game/library/interactions/function - interactions (GM).rpy", line 58, in ct
l = list(traits for i in list(args))
File "game/library/interactions/function - interactions (GM).rpy", line 58, in <genexpr>
l = list(traits for i in list(args))
TypeError: unhashable type: 'list'
While running game code:
File "game/library/interactions/GM - chat.rpy", line 374, in script
$ line = rts(chr, {"Dandere": ["I sleep on my days off. ...Is that bad?"], "Athletic": ["Working out.", "Exercising", "Running laps"], "Dawdler": ["I spend my days just lying around. Isn't there anything to do around here?", "I like beach sports, y'know? Just watching, though."],
File "game/library/interactions/GM - chat.rpy", line 379, in <module>
"co('Server')": ["Best way to get the wine stains out. Do you know any?", "Chatting with strange customers at the bar.", "Keeping the bar running."], "default": ["Nothing special, really."]})
File "game/library/interactions/function - interactions (GM).rpy", line 23, in rts
if eval(trait, globals(), locals()): available.append(options[trait])
File "game/library/interactions/function - interactions (GM).rpy", line 66, in co
return ct(*args)
File "game/library/interactions/function - interactions (GM).rpy", line 58, in ct
l = list(traits for i in list(args))
File "game/library/interactions/function - interactions (GM).rpy", line 58, in <genexpr>
l = list(traits for i in list(args))
KeyError: 'SIW'
Wait a sec. We cannot check all existing class traits every time when we need to find out if the girl can fight or willing to have sex with anyone. Or rather we could, but it's stupid and time consuming.
That's why all class traits have "occupations" field which might have SIW, server, warrior, etc. occupations.
I figured co function checks occupation field, so I write lines like "co('SIW')":[...].
Cases when you need to check one specific class trait are very rare, and should be handled like ct("trait").
C'mon Xela, I know you want to code co and ct for me :)
Btw how to check if the character has an effect?
if "Effect Name" in chr.effects:
# do something
I dislike female disney characters, so I wasn't too impressed by Princess Trainer.
Now Akabur released Witch Trainer. It even has an extended version made by russian enthusiasts (pornolab has it). Amazing stuff.
All effects are still strings so:I don't think so, in this case checks are always true.
if "Effect Name" in chr.effects:
# do something
will do.
if chr.effects["Food Poisoning"]['active']:works as I need.
I'm not sure how to change gui myself...
- greetings label in the beginning of the interaction, just like our GMs have. It should be a new label, since greetings will be a bit different from GMs.
- current "about her" is about her job, actually. I suppose we need to rename it and add actual "about her" topic, where you can check mood, disposition and effects.
- all "go out" options are broken. I actually want to add more or less decent romance system after the next release, but we should remove those options from gui now. The only thing you can get there is an error :)
- I want to add friend and lover labels now. We have very good lines for those propositions, and I could use such labels for many lines too.
I wonder what is the best way to do it. New effects maybe? Traits are too obvious for such things. Or we can set some kind of simple labels on characters? Since these effects will do nothing with stats, unlike existing effects.
Which line is more correct?
$ pytfall.gm.img_generate('profile', 'happy')
or
$ pytfall.gm.img_generate("profile", "happy")
For some reason in GMs there is different syntax in different places.
I will start coding soon, do you want me to take care of this or advance the jobs (is there a sense of urgency)?I'm afraid we'll forget about GMs if we postpone it for later. And I might forget ideas for GMs that I have now. I actually forgot about GMs once already, after I added lines from AA2 a couple months ago. I wanted to add more options, but was distracted by other modules :)
- greetings label in the beginning of the interaction, just like our GMs have. It should be a new label, since greetings will be a bit different from GMs.
- current "about her" is about her job, actually. I suppose we need to rename it and add actual "about her" topic, where you can check mood, disposition and effects.
- all "go out" options are broken. I actually want to add more or less decent romance system after the next release, but we should remove those options from gui now. The only thing you can get there is an error :)
- I want to add friend and lover labels now. We have very good lines for those propositions, and I could use such labels for many lines too.
I wonder what is the best way to do it. New effects maybe? Traits are too obvious for such things. Or we can set some kind of simple labels on characters? Since these effects will do nothing with stats, unlike existing effects.
if char["Hinata"] in char["Sakura"].friends:
# Do something.
if hero in chr.friends:
# Do something.
I'm afraid we'll forget about GMs if we postpone it for later. And I might forget ideas for GMs that I have now. I actually forgot about GMs once already, after I added lines from AA2 a couple months ago. I wanted to add more options, but was distracted by other modules :)
I already added many new lines and checks today, but I need what I described to sort them out as intended.
I think I'll go with effects for friends stuff (I figured how to create them). Because we already have functions to work with them everywhere, unlike flags.
I though system was set up is such way that you could do it yourself, at least that was the plan. I'll take a look as well.I don't know how to make buttons and add labels to them that lead to my lines. I expect it to be very different form Delphi :D
I think best (future proof) way is to add instances of character to sets like chr.friends, chr.enemies, chr.lovers and etc. Then you can do checks like:Ohhkey, how the code that adds MC to character's friend list will look like?
if char["Hinata"] in char["Sakura"].friends:
# Do something.
in GM it will look like:
I don't know how to make buttons and add labels to them that lead to my lines. I expect it to be very different form Delphi :D
Ohhkey, how the code that adds MC to character's friend list will look like?
chr.friends.add(hero)
hero.friends.add(chr)
I already added many new lines and checks today, but I need what I described to sort them out as intended.
Yup, I didn't. So far I expanded existing interations (general, about her, etc) by adding dozens new lines and fixing some old logic made by Cherry year ago. At the halfway I figured that major part of new lines should actually be a part of greetings lines to look more natural, and so I went to the forum and wrote about it :)
- Since we use permanent traits as occupations, that interaction #8 in GM - chat.rpy where you ask a girl to change occupation cannot be used anymore in its current condition. If you want to rewrite it somehow to work with non permanent classes traits, go ahead. Otherwise I'll delete it (probably the best option, it's too simple to change even non permanent class via one dialogue).This is beyond my abilities anyway.
- GM - shopping.rpy is a tough one. It handles shopping together with girl based on her occupation again, and I don't understand some parts there. I'm not sure also that we need it in its current super complex condition. We should allow autobuying system to select an item that the girl wants, and then buy it for her or not.
This (http://www.pinkpetal.org/index.php?topic=1291.msg30834#msg30834) post explains some things about labels and GMs. But it doesn't answer my questions about adding new options and renaming old ones. Or maybe is does, but I don't understand it :D
I need to know how to compare stat with its max. I tried chr.mp >= chr.get_max("mp"), but it gives me an error, even though such things are used in screens rpy.
...Not sure what's wrong. I gave Mage class trait to one of characters for testing. It has Warrior and Caster occupations. Now when I check cgo("Warrior"), it works. When I check cgo("Caster"), it doesn't.
"magic": [
-5,
-1
],
What error? This looks perfect? It should not fail unless chr is not an instance of Character.While running game code:
My guess would me that testing mage overwrites real mage trait. We need to either rename testing file to have it start with 0 for example or delete it/remove traits from there.Yup. After I deleted it, it started to work.
Have you figured out interaction menus? Or should I do it?I think so. I didn't tried to change GM menu so far, but if there are no bugs in the code that handles labels, it should be possible too. I'll let you know if there will be issues with GM buttons.
While running game code:
File "game/library/interactions/GM - chat.rpy", line 287, in script
if chr.health < 40:
File "game/library/interactions/GM - chat.rpy", line 289, in <module>
elif chr.health >= chr.getmax("health") and not(chr.effects["Food Poisoning"]['active']) and not(chr.effects["Down with Cold"]['active']):
File "game/library/characters/classes - characters.rpy", line 1070, in __getattr__
raise AttributeError(msg % (key, self.__class__.__name__))
AttributeError: 'getmax' is neither a gamestat nor an attribute of Girl
You have 'getmax' instead of 'get_max' as you showed in your previous post.
Not sure when sourceforge is going to work again. Or maybe it's not going to :D
It's been more than a day, and they barely restored some very unimportant parts of the service, while all major ones are down, including all devs instruments. I wonder if they don't have a backup or something.
Another (http://pornolab.net/forum/viewtopic.php?t=2026817) renpy game. A bit unusual BE, we could use some ideas. Also open sourced, gonna take some sprites and bgs :)
I may be wrong, but isn't it that sh#t that gave us ueof errors all the time?
Nyaatrap made it, we are both very active on lemma. This game has been around for a while now.It has something in common with that new Alkion BE. I mean, skills have more stats than just damage and cost, it makes BE more complex and interesting.
ifused right
rofl
I never used the softwhere that came with git, i used other programs to push, if i remember corectly thier is a tortiose version for git
The trainee probably used one of their installer to update their servers.It's a reference to malwares that sourceforge seems to add into installers. Many people mention it btw.
Trainee: "Next, next, next, Yes I agree..."
Trainee: "...Oh. Shit."
About rts function, could it be possible (not now of course, but when we'll get a working repo) to make it return not only randomly selected line, but also trait/occupation that it decided to choose? This way different lines will have different outcome in terms of changing stats and disposition.
Does MC have all skills that girls could have? I mean, even if it's a male MC who cannot strip, he still could know the theory and teach girls. I ask because it's possible to compare skills in GMs and maybe rise a bit the less one if the difference is big enough.
Can we already run BE inside of a dialogue (MC vs the girl) and return victory or defeat?
I suppose we could try GitHub if it actually allows to push and pull without errors.
python:Also, how to return to the starting location after everything is finished?
renpy.scene()
hs()
show bg city_beach
with fade
"You take a walk on the beach. "
$ chr.lovers.add(hero)As I suspected, it gives an error that lovers is not a stat of a girl.
$ hero.lovers.add(chr)
I tried As I suspected, it gives an error that lovers is not a stat of a girl.
if d(80) and chr.flag("gm_stripped_today") != dayI'd like to know the format of these days to make more complex checks. Like once per several days. Is it just a number of turn, and stuff like
...
$chr.set_flag("gm_stripped_today", value=day)
if (day - chr.flag("gm_stripped_today")) > 7will allow to check once per week?
I'd like to know the format of these days to make more complex checks. Like once per several days.
Is it just a number of turn, and stuff like will allow to check once per week?
Alright, how to check if the character has specific images, ie tags?
if chr.has_image(*tags, **kwargs):
# Do something...
if chr.has_image("bunny"):
# Do something...
menu: g "Would you like to see me naked?"I suppose it should work for me too.
"Hell Yeah":
g "You're weird... but I'm weird too ;) "
$pytfall.gm.change_img(chr.show("nude", "simple bg", type="first_default", exclude=main_sex_tags))
g "So, what do you think?"
$pytfall.gm.restore_img()
$chr.disposition += 10
$chr.set_flag("gm_stripped_today", value=day)
"Yes!":
$pytfall.gm.change_img(chr.show("nude", "simple bg", type="first_default", exclude=main_sex_tags))
g "You like?"
$pytfall.gm.restore_img()
$chr.disposition += 5
$chr.set_flag("gm_stripped_today", value=day)
"No":
g "Well, screw you then!"
$chr.disposition -= 20
label interactions_fuck:The first part decides where you can go depending on tags. Works perfectly.
if chr.has_image("sex", "simple bg", type="first_default", exclude=["rape", "angry", "in pain"]):
"Where would you like to do it?"
menu:
"Beach" if chr.has_image("swimsuit", type="first_default", exclude=["sex", "sleeping", "angry", "in pain"]) or chr.has_image("sex", "swimsuit", type="first_default", exclude=["rape", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon"]):
show bg city_beach with fade
$chr.set_flag("s_bg", value="beach")
"Park":
show bg city_park with fade
$chr.set_flag("s_bg", value="park")
"Room":
show bg girl_room with fade
$chr.set_flag("s_bg", value="room")
else:
show bg girl_room with fade
$chr.set_flag("s_bg", value="room")
if chr.flag("s_bg") == "beach":
if dice(50):
$ pytfall.gm.img_generate("beach", "nude", "swimsuit", exclude=["sex", "sleeping", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
else:
$ pytfall.gm.img_generate("swimsuit", "nude", "simple bg", exclude=["sex", "sleeping", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
elif chr.flag("s_bg") == "park":
if dice(50):
$ pytfall.gm.img_generate("nature", "nude", exclude=["sex", "sleeping", "angry", "in pain", "indoors", "beach", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
else:
$ pytfall.gm.img_generate("nude", "simple bg", exclude=["sex", "sleeping", "angry", "in pain", "indoors", "beach", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
else:
if dice(30):
$ pytfall.gm.img_generate("living", "nude", "lingerie", exclude=["sex", "sleeping", "angry", "in pain", "outdoors", "beach", "onsen", "pool", "stage", "dungeon", "public", "bathing"], type="first_default")
elif dice(30):
$ pytfall.gm.img_generate("living", "no clothes", exclude=["sleeping", "angry", "in pain", "outdoors", "beach", "onsen", "pool", "stage", "dungeon", "public", "bathing"], type="first_default")
else:
$ pytfall.gm.img_generate("nude", "no clothes", "simple bg", exclude=["sleeping", "angry", "in pain", "outdoors", "beach", "onsen", "pool", "stage", "dungeon", "public", "bathing"], type="first_default")
$ sex_count = 0
label after_menu:
jump n_fuck
label n_fuck:
"She slowly undresses. What would you like to do now?"
menu:
"Ask for blowjob" if chr.has_image("blowjob", "partnerhidden", exclude=["rape", "angry", "in pain"], type="first_default"):
if chr.flag("s_bg") == "beach":
$ pytfall.gm.img_generate("blowjob", "partnerhidden", "swimsuit", "beach", exclude=["rape", "angry", "in pain"], type="first_default")
$ sex_count += 1
elif chr.flag("s_bg") == "park":
$ pytfall.gm.img_generate("blowjob", "partnerhidden", "nature", exclude=["rape", "angry", "in pain"], type="first_default")
$ sex_count += 1
else:
$ pytfall.gm.img_generate("blowjob", "partnerhidden", "living", exclude=["rape", "angry", "in pain"], type="first_default")
$ sex_count += 1
"Ask for titsjob" if chr.has_image("titsjob", type="first_default", exclude=["rape", "angry", "in pain"]):
if chr.flag("s_bg") == "beach":
$ pytfall.gm.img_generate("titsjob", "swimsuit", "beach", exclude=["rape", "angry", "in pain"], type="first_default")
$ sex_count += 1
"Ask for handjob" if chr.has_image("handjob", type="first_default", exclude=["rape", "angry", "in pain"]):
if chr.flag("s_bg") == "beach":
$ pytfall.gm.img_generate("handjob", "partnerhidden", "swimsuit", "beach", exclude=["rape", "angry", "in pain"], type="first_default")
$ sex_count += 1
label after_menu:
jump n_fuck
jump n_fuck
?if chr.flag("s_bg") == "beach"just in case,
"Ask for blowjob" if chr.has_image("blowjob", "partnerhidden", type="first_default", exclude=["rape", "angry", "in pain"]):this one should check if the girl has blowjob+partner hidden. The girl which I use for testing has a dozen such pictures. And after that give me such a picture
$ pytfall.gm.img_generate("blowjob", "swimsuit", "beach", exclude=["rape", "angry", "in pain"], type="first_default")Yet it skips again.
menu:Still nothing. Well excuse me, all packs have non-rape bj pictures, and they tagged as intended, just checked. I think it's a bug either in tags function or the engine. Guess I can't continue to work with GMs anymore until you fix it...
"Ask for blowjob" if chr.has_image("blowjob", type="first_default", exclude=["rape", "angry", "in pain"]):
$ pytfall.gm.img_generate("blowjob", exclude=["rape", "angry", "in pain"], type="first_default")
I just triedStill nothing. Well excuse me, all packs have non-rape bj pictures, and they tagged as intended, just checked. I think it's a bug either in tags function or the engine. Guess I can't continue to work with GMs anymore until you fix it...
And sourceforge continues to prove its failureness. Midweek, no eta for devs functions, some of presumably restored functions don't work too judging by comments.
I really could use type = all for chr.has_image to exclude options without perfect pictures.
- normal = normal search behavior, try all tags first, then first tag + one of each tags taken from the end of taglist
- any = will try to find an image with any of the tags chosen at random
- first_default = will use first tag as a default instead of a profile and only than switch to profile
So if you need to check if there are bj+partner hidden+simple bg pictures, with all three tags mandatory and not just some of them, there is nothing you can do. If I'm not mistaken.
"Ask for blowjob" if chr.has_image("bc blowjob", "partnerhidden", exclude=["rape", "angry", "in pain"], type="first_default"):This thing is supposed to not let you have bj option if there are no "bc blowjob" + "partnerhidden" pictures at all. Yet it's not unusual to see "bc blowjob" without "partnerhidden".
if chr.flag("s_bg") == "beach":
if dice(50):
$ pytfall.gm.img_generate("bc blowjob", "partnerhidden", "beach", exclude=["rape", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
else:
$ pytfall.gm.img_generate("bc blowjob", "partnerhidden", "simple bg", exclude=["rape", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default")
Falling back is just one of possibilities. Another option is to not allow some rare stuff, like footjob, appear in menu at all if the girl doen't have such pictures with hidden partner.
More importantly, we have cu tag (aka after sex) which is perfect for such cases. But I think it was added after you coded falling back system, so it doesn't use it. It is the most perfect default tag for many sex interactions. At least add it to the system. Or point me out where it is, maybe I can handle it.
$ pytfall.gm.img_generate("bc blowjob", "partnerhidden", "beach", exclude=["rape", "angry", "in pain", "indoors", "onsen", "pool", "stage", "dungeon", "bathing"], type="first_default", default=chr.select_image(chr.id, 'after_sex'))
What do you mean by not appearing in the menu? Ren'Py menus have nothing to do with our images and you can exclude anything you like when you condition menu choices. If you need predefined lists, there are examples where in the past, we defined lists with tags and added them to exclude list.Ok, I explain as detailed as English possibly can :D
But I can't possibly check footjob+hidden partner, which is more accurate in this case since it's MC having sex and not some customer. Because as long as there is at least one footjob picture, has_image method will return true even if it goes without hidden partner.
Pull request is something entirely different
I need your github logins...It's DarkTl of course. Link (https://github.com/DarkTl).
It is just a means of preventing changes of questionable quality from being added primarily to the master branch, but it can be used for any branch. Once a pull request is created, someone from the core development team has to approve to the request before the changes are allowed to be applied. Typically, pull requests are only used if a project has an outside involvement or there are those who produce questionable work. Outside of that, the feature can be ignored.
It's DarkTl of course. Link (https://github.com/DarkTl).
https://github.com/Cherry-Wood
Still alive :) And I may even do something this weekend for a change :D
We might need to show vitality, joy and libido bars during interactive sex scenes in order for players to understand what they should and shouldn't do.
Btw this time you won't be able to evade my request about picking a partner for lesbian actions :D
I almost finished straight sex scene. There will be bdsm (probably shorter, since based on existing pics), group (even more shorter because we don't store much info about groups) and lesbian scenes.
For lesbian you either pick a partner (checking if she wants to do it as well) and show their nude pics close to eath other, or allow girl to pick a random partner ie show usual lesbian picture. I don't know how to pick some another girl, check her disposition and show pics together.
https://github.com/MoreinAI
Here is mine :)
I think I successfully pushed all my changes. Interactions are far from being finished, but they are in a much better condition now.
You can test interactive sex scene, it's right in the chat menu, and doesn't have any conditions yet. Though you either need to use console a lot or play for some time (or just look at the code) to see all options.
I'll need to add results of the scene, meaning rip more lines from AA2 where girls have many lines about how did you do it. And it doesn't use limitations yet, like vitality and libido, though it already changes them all the time.
Let me know what you think of em..
Also you forgot to reset the last pic to GM picture.Nope, I just wasn't sure how to do it because I don't know what kind of images GMs use now.
Let me know what you think of em..They actually look very good! I don't think we need a better quality.
Nope, I just wasn't sure how to do it because I don't know what kind of images GMs use now.
They are awesome!
No items, we do not have a system that matches pictures to equipped items and that would be too much stuff to render anyway.
===
I just pushed small fixes of typos to interactions. They are really good!
I did not say that we do not want one, I said that we do not have one :)
It's just that Otherworld had a somewhat similar system without that big of a merit... maybe you can single out the best matches for closing and render those instead of all options.
Nope, I just wasn't sure how to do it because I don't know what kind of images GMs use now.
Xela, ignore everything that goes after my interactive sex scene, I mean those single old sex options. I noticed that you fixed some things there, but I will rewrite them too, so it's not a good idea to make them work now :)
$ chr.set_flag("forced", value="false")
# codeline
# codeline
This line is not useful, in Python any string except for empty string will return True! So it should be: $ chr.set_flag("forced", value=False).But then I check it like
if chr.flag("forced") == "true"Are you telling me it still will return true if the flag is "false"?! ???
that and it makes my life miserable :) I strongly suggest checking out JEdit, it's quire good.Oh? It cannot handle tabulation in the comments, yet you suggest it?
But then I check it like Are you telling me it still will return true if the flag is "false"?! ???
Also, initially I wanted to use true and false, ie boolean values. It gives me the error that it does not know what is it when I checked the flag.
chr.set_flag("flag", True)
if chr.flag("flag"):
# Do something...
if chr.flag("flag") == True:
# Do something...
Oh? It cannot handle tabulation in the comments, yet you suggest it?
Do we need separate labels for interactions and gm sex options? Seems absurd, redundant and very hard to maintain :(I can tell that some of the labels should be used in both GMs and interactions, while others only in one of the places. Current system supports it.
It has a good syntax highlighting for Ren'Py.Notepad++ has it for almost any language, including python + you can tweak it freely.
I can tell that some of the labels should be used in both GMs and interactions, while others only in one of the places. Current system supports it.
We need conditions for buttons in gui though. When for example warrior characters have sparring button (leading to BE), while others don't have such a button. Or SIW characters have option to hire them for sex, while others don't.
Notepad++ has it for almost any language, including python + you can tweak it freely.
"Option 1":I don't really see any other way. I cannot use checks in interactions the way that hire for sex option will not look out of place for managers. So it simply should be hidden for everyone but SIWs.
....
"Option 2" if n>m:
....
Elaborate? Not sure how you can elaborate something like that :D
There are buttons in screen rpy that are tied to labels in interactions rpy. There should be option to give conditions for them, pretty much like you can do it for menus.I don't really see any other way. I cannot use checks in interactions the way that hire for sex option will not look out of place for managers. So it simply should be hidden for everyone but SIWs.
set_friends(hero, char["Hinata"], char["Sakura"])
end_friends(hero, char["Sakura"])
check_friends(hero, char["Hinata"])
set_lovers(hero, chr)
Elaborate? Not sure how you can elaborate something like that :D
There are buttons in screen rpy that are tied to labels in interactions rpy. There should be option to give conditions for them, pretty much like you can do it for menus.I don't really see any other way. I cannot use checks in interactions the way that hire for sex option will not look out of place for managers. So it simply should be hidden for everyone but SIWs.
pytfall.world_actions.gm_choice("Fuck", condition="chr.disposition > 200", index=(m, 7))
Also if disposition between any character and mc will be terminated if disposition falls too low during the next day. I cannot do that for inter-characters relationships because we do not maintain dispositions between different characters, just between characters and mc.I think we'll need flags or something to maintain disposition between characters, because actual numeric disposition between everyone is too much information. Friendship gains when they live and work together (in one building) for some time depending on how similar their traits are, and lover is possible only with lesbian or bisexual traits involved. We also should limit max number of friends for girls (not including MC) based on traits.
Let's be realistic. You won't propose a girl to do lesbian action with someone on the other side of town. They should be in the same building (brothel, MC house in the future, etc).
I am not sure how to handle lesbo thing, there are too many variables involved :( Like if the other girl is doing an exploration run, if she is available otherwise, if she is in the same building (or mc and chr would have to have mental power in order to find any of the girls in the city/world) and etc...
I think we'll need flags or something to maintain disposition between characters, because actual numeric disposition between everyone is too much information. Friendship gains when they live and work together (in one building) for some time depending on how similar their traits are, and lover is possible only with lesbian or bisexual traits involved. We also should limit max number of friends for girls (not including MC) based on traits.
Let's be realistic. You won't propose a girl to do lesbian action with someone on the other side of town. They should be in the same building (brothel, MC house in the future, etc).
call girl_meets_greeting?
In GM-greetings rpy there is a comment "Accessed through call rather then jump". I suppose it means that any lines from there could be quickly called from anywhere without the need to jump back. That's quite useful if it can be done not with greetings only.
It should look exactly like witten, ie ?
call girl_meets_greeting
call expression girl_meets_greeting
Can you not just return to the interaction menu after doing something, but actually exit interactions and go the girl profile screen?
It should work differently for unhired girls, since you can't see their profiles... Maybe return you to the place where you live, or simply to the city map.
jump girl_interactions_end
Wats the sprites resolution needed for VN and Battle ?We don't have some fixed resolution because we can't control what kind of images packs have... Also we rarely show any pictures in full size except small ones like battle sprites and portraits. I personally resize all pictures and sprites to 1000x1000 if they are bigger. An average quest sprite is about 700x600 or something like that. Portraits are about 200x200 if possible, or smaller. Xela should know better than me about sizes of battle sprites, but they are quite small. Like 300x200 or something.
Also for magic.. all kinds like oriental/Western (Miko/wizzard) outfits ?
Just got amazing idea for interactions from those concept documents you linked in the chat.
I'll make everything I can based on existing stats and traits. The more stats/flags we'll have, the more interactions options I will be able to create (like talk about hobbies if characters will get them at some point).
We don't have some fixed resolution because we can't control what kind of images packs have... Also we rarely show any pictures in full size except small ones like battle sprites and portraits. I personally resize all pictures and sprites to 1000x1000 if they are bigger. An average quest sprite is about 700x600 or something like that. Portraits are about 200x200 if possible, or smaller. Xela should know better than me about sizes of battle sprites, but they are quite small. Like 300x200 or something.
Magic tag assumes that a spell is being used by the character. Very often they do it in normal clothes. If you want to give them some ususual clothes, go ahead, but it's not mandatory.
While running game code:
File "game/script.rpy", line 220, in script call
call testing
File "game/library/testing.rpy", line 2, in script
python:
File "game/library/testing.rpy", line 38, in <module>
rgirls = rchar.keys()
NameError: name 'rchar' is not defined
It's a general knowledge about sex. It should be used in situations when we don't have a specific sex skill. You can call it in gui whatever you want, and you can change it in the code as long as you rewrite all the checks by yourself (items, schools, interactions) :D
I cannot start the game even with your testing rpy.
File "game/script.rpy", line 220, in script callWell, I can't do anything without a working game ::)
call testing
File "game/library/testing.rpy", line 2, in script
python:
File "game/library/testing.rpy", line 57, in <module>
for girl in char.values():
NameError: name 'char' is not defined
Let's begin our lection! 8)
As you (hopefully) know, rts function was developed to select randomly one of conditions and then randomly select one of the lines for that condition. Initially it was made to work with traits only, but using constructions like "cgo('SIW')" you can make it work with occupations too. Perhaps it could work with any conditions at all, I never tried, but I might soon enough.
It was developed because elif+dice constructions couldn't provide a proper level of randomness for big amounts of checks.
Now, one thing is when you just want a 100% random line. But what if you want to do something after showing a line, like check cleaning skill if Server occupation was selected by rts or check sex skill if Nymphomaniac trait was selected by rts? And then based on those checks do something? Well, the answer is that you cannot do it because currently you don't know what rts selected.
Strictly speaking, we don't HAVE to use rts for such cases. Another function could be created for cases when you need not just line. What I need is a function that will select randomly one of several conditions (like occupation, trait or even stats) and then will execute an arbitrary code made for that selected condition. Note that is should select only from those conditions which are true. Also rts has "default" condition that works if none of conditions it true.
$ line = rts(char, {
"Athletic": ["rts_athletic_choice"],
"Manly": ["She gives you a lection how to build your muscles properly. You feel a bit offended, but keep your cool.", "She casually remarks that you should exercise more often, and gives you some advices."],
"default": ["You chat for some time."]
})
if renpy.has_label(line): # We call a label (or jump if that is more appropriate)
call expression line
else:
"[line]" # We interpolate the line
# Rest of code
label rts_athletic_choice:
char.say "I'll race you to the cafe! "
extend "There is a reward for you if you win!"
if hero.agility > char.agility:
"You can in first!"
else:
"You just wasn't fast enough..."
return
I'm also thinking about using hidden flags for interactions, something like what AA has, but less complex. In AA the game remembers in details absolutely everything you and other characters do. In our case I want to create flags that will remember in general what did you do within interactions.
Thus, not only disposition, but also flags will matter when we check something. The more you flirt for example, the less disposition you will need for a lover status (within reasonable limits).
If you want npcs, they actually should have a class. Because we'll need it at some point anyway, and the more npcs we made now without a class, the more we'll have to change after such a class will be created.
At very least they need all used in BE stats and disposition.
Magic tag assumes that a spell is being used by the character. Very often they do it in normal clothes. If you want to give them some ususual clothes, go ahead, but it's not mandatory.
Also is it ok to make Furniture/City looks like something between Medieval/Victorian style? and you would have to define what kind of technology they have like ( steam engine or man-animal moved / candles or oil lamps / caravel(or earlier ship type ) or ship of the line / and so on.. ) also things that usually use electricity that we might need could be using magic source instead of electricity..In terms of lore and origin "events" of WM happened in the same world many years ago. That includes androids and other characters from advanced worlds that came from those multidimensional catacombs under Crossgate. It does not mean that there are electricity and digital devices everywhere, but it does mean that you shouldn't be surprised by such things, though of course they are still uncommon.
MC and girls both have charisma, so having more charisma than a girl is possible and useful. But there is also strength of character, ie character stat. Looks like MC doesn't have it, or anything similar like willpower. So I can't check something against girls character stat, while this is obviously needed as a difference between flirting with tsundere and deredere.
Someone may wish to create unique storyline later.Yeah, right. Someone like me ::)
God Eater anime gives nice references for 3d anime head model / expressions.. but their shader is a bit strangeYeah, they look a bit unrealistic there. Your previous examples were better in this regard.
if (check_lovers(i, hero) or check_lovers(char, i)) and not (i.vitality < 25 or i.health < 25) and not (i.disposition <= -50): # Last check is too make sure partner doesn't dislike the MC.Ie ony girls lovers OR MC's lovers can be there.
willing_partners.add(i)
Gismo, can you create backgrounds? Or maybe lamoli can render it?
I'm trying to find night forest camp background similar to that picture in our main menu for two years already. Without any people, just with forest, bonfire and tent.
SimPy is exactly what I was trying to create a 8 or 9 month back for 2 days but eventually gave up. First, very primitive simulation looks like this:
Nice work )
$ d=dict(x=char.charisma, y=char.character)It does return the name of max stat, and not just value like max(). But it's not enough to find out how small or big stat is compared to others, ie what place it holds in stats top.
$ list1 = max(d.items(), key=itemgetter(1))[0]
Here are the first sketches of the camp in the WoodsOh yes. Those pictures are awesome!
If I do it trait based, there will be dozens of dozens outcomes. So it should be stats/skills based.
That means we need to know not just stats/skills value, but how high/low they are compared to others.
$ d=dict(x=char.charisma, y=char.character)
$ list1 = max(d.items(), key=itemgetter(1))[0]
$ characters = [hero, char, chars["Nami"]]
$ char_with_the_highest_stat = max(characters, key=attrgetter("charisma"))
$ mean_from_all_characters = sum(i.charisma for i in characters)/len(characters)
# You can do a simple calculation on how highest stat compares to the average.
Well, that's useful, but it's not what I asked.
You compare two characters. I mean compare all stats of one character and find out how small is, let's say, charisma compared to the average.
Of course not all of them. Charisma, intelligence, character, constitution. And separately all battle stats to find out what is the best battle stat. That's why I mentioned lists, to be able to control what we gonna compare.
stats = ["charisma", "intelligence", "character", "constitution"]
mean = sum(getattr(char, i) for i in stats)/len(stats)
Yup, it works.
And how to find out which of the characters stats in the list is max?
stats = ["charisma", "intelligence", "character", "constitution"]
stats = {s: getattr(char, s) for s in stats} # Creates a dictionary if "charisma": 200 and etc.
mean = sum(stats.itervalues())/len(stats)
stat_with_highest_value = max(stats.iteritems(), key=itemgetter(1))[0] # returns a string.
game/library/simpy/__init__.pyoI tried to ignore them via gitignore list, but it didn't helped. I googled it, it's probably because they are under version control already. I'm not sure, but I think they shouldn't be in repo at all. Xela?
game/library/simpy/_compat.pyo
game/library/simpy/core.pyo
game/library/simpy/events.pyo
game/library/simpy/resources/__init__.pyo
game/library/simpy/resources/base.pyo
game/library/simpy/resources/container.pyo
game/library/simpy/resources/resource.pyo
game/library/simpy/resources/store.pyo
game/library/simpy/rt.pyo
I don't get how to reference issues from commits :D
I need Praise menu to show up during GMs but not interactions. Usually it means to add mode="girl_meets", but it works only with buttons. When I try to add it to menu (which is pytfall.world_actions.menu(m, "Praise", condition=_not_gt_mode)), I get an error.
I suppose it could be done somehow via conditions, but I don't know how to find out if the character is hired or not.
if char in hero.girls:
# ...
"char in hero.girls"
Hmm i cant decide on whats best for Maids/Barmaid/Waitress.. now that i have lots of clothing items i can decide anything so i guess ill ask you to chose set or tell me to combine parts of em together.Actually, they all are great, it's hard to choose only one. I suppose different packs can use different maids clothes when you render them, unless it will be difficult for some reason.
Now.. what should a prostitute wear in pitfall ???Yeap. Clothes should be revealing. We don't try to make the game look medieval in every aspect.
i got lots of lingerie/stockings/GB/sexy dress/skirt ( but all that is from now days.. ) are those good for that job ??
Formal should be of Now days(suit) or Victorian(robe) ?Most of formal clothes in our packs are long evening dresses. Sometimes stuff like Miko clothes too, if the character doesn't wear them every day.
for Warrior i got full plates/half plates/leathers/armor parts(that can be assembled on leather fittings.. anything special that need to be done first ?Well, we don't want characters to look like medieval knights in full plates or something, they won't look good :)
Nah, I googled that strings are immutable there up to the point that you can't even int them during checks without using an intermediate variable. I can't see how int's limited functionality is useful to anyone except maybe less work for the creator of python.
In delphi you can StrToInt them anytime, freely. It creates a temp variable by itself when needed.
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> temp = "124"
>>> 200 > int(temp)
True
>>> temp
'124'
>>> temp = int(temp)
>>> 100 > temp
False
>>>
Dark is right, maids working in different places may have different uniforms, it's not reasonable to expect one overwhelm all others.
I would avoid anything Victorian and it's also almost impossible to tell. I'd expect to see a level 100 prostitute working at the palace in the best part of the town to wear a different set of robes than a level 5 street whore in the slums, working in a shack with two rooms... we just do get too hang up on this things where we're making packs because the choices are limited to the pics we can find. I'd pick something in between.
Oh yes, it's like instead of a = (b+c)*2 do
a = b+c
a = a*2
And no, StrToInt does not overwrite something. It creates a temporary variable to store results of convertion if you didn't do it by yourself like you have to in python, thus you can check if a > StrToInt(b) without issues and then forget about it forever without borrowing memory by intermediate variable.
Basically, python forces you to int something when it wants it, not when you want it.
I'm pretty sure I don't know enough to make my own functions in python like I do in delphi... Otherwise sex scene checks wouldn't be so huge and repeatable...
Oh yes, it's like instead of a = (b+c)*2 do
a = b+c
a = a*2
a = (b+c)*2
>>> b = "Dark is messing "
>>> c = "with Xelas Mind! "
>>> a = (b+c)*2
>>> print a
Dark is messing with Xelas Mind! Dark is messing with Xelas Mind!
>>>
Come to think of it, the lack of such a common thing as multiline comments in python except multi-line strings which are not even usable as comments in some cases speaks for itself. I enjoy spamming # so much.
They advice to use plugins that can do spamming automatically, or use if false (which is useless if the code throws an error). ffs ::)
I can render lots of lingerie/dress types with different fabric like jute/cotton look like.. or velvet/satin..
Maybe the prostitute rank will restrict the wearable items.. like if there s 10 ranks.. 1-5 cotton like fabric.. 5+ velvet/satin.. also they could have different shape even if they look different since the fabric type make em reflective or not..
If your ok that their shape is the same but fabric(reflectiveness) is different.. you could simply give lower stat/skill bonuses on the rank 1-5 cotton.. else ill try to make more kinds of shapes..
That way a low lvl prostitute could never wear what a high lvl can.. but with the option to have it look it like ( as shape not fabric.. like a cheap copy of the top class one ) or restrict completely some of them to high class only..
LoLMy initial code was
Are you just messing with me? They works exactly the same :)
a > StrToInt(b) in Delphi
and
a > int(b)
in Python behave in exactly the same way... I've given clear examples of that in code and in my posts.
Oh no, this is perfectly "Pythonic" Python:And that was an analogy, not actual example.Code: [Select]a = (b+c)*2
This part I don't understand,Nope. It's not comments, it's docstrings.
"""
Comment Line 1
Comment Line 2
"""
are ml comments, they are not interpreted as strings.
My initial code was
if hero.gold >= int(temp).
It didn't worked, throwing something about unicode strings and stuff, until I googled it and changed it to
$ python_BS = int(temp)
if hero.gold >= python_BS
if hero.gold >= int(temp)
if hero.gold >= int("4342")
And that was an analogy, not actual example.
Nope. It's not comments, it's docstrings.
The code is gone of course. It was "unsupported operand type(s) for -=: 'int' and 'unicode'" error.
if hero.gold >= int(temp):
# ...
hero.gold -= temp
100000 -= "2000"
hero.gold -= int(temp)
call mc_setup
?
It restricts story. Pure manager cannot fight.
Existing classes:
Main: Prostitute
Sub: Anal, Oral, Stright, Mistress, Group
Main: Entertainer
Sub: Dancer, Stripper
Main: Maid
Sub: Cleaner, Waitress, Bartender,
Main: Manager
No subs
Main: Mage
Sub: Battle Mage, Healer
Main: Warrior
Sub: Defender, Shooter, Assassin
What does it mean:
- Allowing male MC to be a Maid, a Dancer or a Prostitute is very, very dubious decision. Not female maybe, but it's another question.
- At the current MC setup screen there is place for 4 main branches (I mean those major choices, merchant/warrior/mage/some another icon that looks like manager :) ).
If you want ANY girls class to be freely available (and that's already 6 branches, and will be more), we require another screen. I figured you want to keep the current one. Thus again ANY girl class is not an option.
- Unless you want MC to be oral prostitute, there are only 3 branches that we can use for him: Warrior, Mage, Manager. And manager is a poorly developed one, since we don't really have any means to develop it better. Management skill alone is not enough for this.
- Oral prostitute MC == 100% free class selection. It's not like I have anything against it, I just will never ever select it, and most players probably too. Cause MC is kinda player's avatar in the game world, and who wants to be a MALE anal prostitute instead of assassin? (not female though :D )
I suppose there are people who want to, but not many. Thus any time we spend on obviously super unpopular choices will be wasted.
- Basically, casanova male = prostitute female. But it still means that MC cannot use prostitute classes and needs his own classes.
- Just because you cannot select something as a main class in the beginning doesn't mean that you cannot obtain it later as a secondary class.
- I cannot imagine meaningful subclasses for manager, no matter how important he will be. I suppose we can go to sex manager/service manager stuff, but to me it looks like artificial sophistication with no real need.
Client 1 came into Building at 0.
...
...
The current mc setup screen is not meant to work with class traits. It changes stats directly, I think. And even though some options suggest additional items, there are no real examples of how it should work, ie how we give those (sometimes random) items to MC.
I seriously propose bodyguard system for cases when MC is not a warrior or a mage. Otherwise all stories and quests will be peaceful, boring and predictable because it forces us to never attack him.
Just an idea:
benefits:
benefits:
- open ended. If a class is defined as a collection of skills, that have to be at various levels before you can enter ( and maybe a few feats), creating new classes is easy and can be done in a pinch.
- girls and the MC can use the same system.
- checking the prequisites allows you to call the same class different things. For a male, it would be escort, just as for the woman, but you could also implement that the class buttler, if selected for a girl, is called maid.
- many funs.
drawbacks:
- most likely lots of work
- definition problems.
- classes would have to be added via packs. not neccesarily a bad idea, but could be worked.
My vacation starts from tomorrow. That means I'll have even more free time than usual for the next month :)
I'm going to make a main story, we have enough ideas and texts now. It WILL be based on the fact that MC can defend himself, either via battle class or with the help of his battle party.
As for MC screen, even if we'll use labels, to make it work I will need to know:
- how to give MC main classes. I suppose it should be different from just adding traits.
- how to give him items AND equip them right after that when needed without access to gui
- how to add a character to MC's battle party without access to gui
Hm. Characters have many portraits for various emotions. How to control which one is shown when they say something?
Hm, if you say so. I don't remember the code, so I might missed int as you assumed, but as far as I remember, I didn't. We'll see when I recode give gold to free girls option based on free input without using your examples for a start.
You said once that the images function tries all tags first, then first tag + one of each tags taken from the end of taglist. Is it still true? Because it's not the best algorithm for more than 3 tags.
If you have gm.set_img("2c vaginal", "indoors", "partnerhidden", "gay") and you don't have indoors, you at least should try to show 2c vaginal+partnerhidden+gay.
I wonder how renpy will work on recently released windows 10...
Yeah, I know. I'm still playing with interactions, they are not ready :)
Ideally, if we want to show any emotions during the answer, we should change her portrait, not picture. But we don't have such an option yet (that really surprised me, it's one of the most common options in VNs).
$ char.override_portrait("profile", "winter", exclude=["indoors"])
$ char.restore_portrait()
Hm, if you say so. I don't remember the code, so I might missed int as you assumed, but as far as I remember, I didn't. We'll see when I recode give gold to free girls option based on free input without using your examples for a start.
You said once that the images function tries all tags first, then first tag + one of each tags taken from the end of taglist. Is it still true? Because it's not the best algorithm for more than 3 tags.
If you have gm.set_img("2c vaginal", "indoors", "partnerhidden", "gay") and you don't have indoors, you at least should try to show 2c vaginal+partnerhidden+gay.
So basically when I need a sad portrait during scene, I write $ char.override_portrait("portrait", "sad")?
What about stuff like $ h = chars["Hinata"].say, when we tie char to letter and then write h "Now I can talk too!"?
Then it doesn't solve the logic of selecting one or two main classes, but not more.
If any label can do anything, then it might as well try to give a main class. While other labels don't.
I downloaded Machina of the Planet Tree game today, made based on the newest rpg maker. It has high quality resources, and I mean everything, from animation and bgs to sounds and music.
I pushed very tiny first step of the story. So far I only wasn't able to figure out how to play two sounds at the same time. Jump to story label is in the second starting menu, where you select how to set up MC. One sound stops other instantly, so I had to put pauses between them. But it's not a perfect solution, ideally both should play.
My quality falls and rises with the material available to me
Ok.Yup, something like that, maybe even a bit shorter if it's hard to come up with. Try to do it for others too.
First quests in the secret village:
These stories should be written with mind that there will be more so an event/flag/personal flag trigger or a quest should be used for controls.That doesn't matter, I'll easily tie them to quests.
I need to know how to give an item to MC or a character. Or take.
hero.inventory.append(items["Excalibur"])
hero.inventory.remove(items["Excalibur"])
hero.add_item("Excalibur")
And I need to know how to add locations to the map, unless it's so complex that you need to handle it personally.
<forest_entrance name="Dark Forest"
x="9" y="570" type="location"
image="content/gfx/interface/buttons/blue_arrow_left.png"/>
<city_jail name="City Jail"
x="0" y="0" type="location" rx="0" ry="0"
image=""/>
We however need logic to unlock locations on the map via quests.
hero.add_item("Excalibur")
hero.remove_item("Excalibur")
char.add_item("Excalibur", 5)
Ok, dudes.No, you do very useful job. Writing takes a certain talent that me and Xela both lack. Quest making =/= writing. One thing is to come up with a general story as a sequence of events, and another is to write unique stories for characters, with unique dialogues and reactions.
Look at it that way:
What I am providing is entry level adventures.
I will not be pissed if my adventure does not get taken. All I do is take opportunity at the writing progression. Plus, I allways hope I do honor the individual character of the girl.
with 5 being the amount of items will work as well.Will there be an error if you'll try to take items they don't have?
Will there be an error if you'll try to take items they don't have?
I need some hints on what ki8nd of shit I should write for you, if you guys want me to write better / increasingly funny / character driven. At least give me the surrounding circumstances.
I guess just the ideas and writing, maybe even submitted in Ren'Py script to make Darks job easier would go a long way.I feel like the need to work with renpy scares many people unfamiliar with coding. Better to have dialogues and code them than to have nothing :D
*Btw Kushina cannot be a virgin for obvious reasons, thus cannot be a part of Tsunade's quest.
But she still could use a small quest of her own.
I feel like the need to work with renpy scares many people unfamiliar with coding. Better to have dialogues and code them than to have nothing :D
But Klaus knew absolutely nothing about coding and still managed to do well for a while.What you describe is for dialogues only, anyone can do it for a minute (literally), so it's not worth it. But actual quests will require flags and checks, and even stuff that you'll need to code yet.
We agreed not to adhere to canon when it doesn't suit us. So there is no need to go out of the way.I dunno, she is pretty hot as a milf already. While we don't have a canon, if it's not broke, don't fix it.
Wow. I can safely claim that I would never came up with such a story :D
It goes well enough until the point when we have two characters in one forever. While this makes sense in terms of pure story, in terms of gameplay it means that Kushina can never be used by player, or even exist, at the same time as Naruko, no matter what we do. What means that we have to code a lot just for one single unique case.
In other worlds, they have to be separated in the end. They still can have special events, like fuck two in one even after the quest is finished if player wishes to, but it shouldn't affect other systems, forcing us to change so many lines of code. We could say that she still has to return inside Naruko from time to time (for example when they sleep), but it shouldn't be two in one all the time.
- Every character has a unique id in the game.
- All pictures and stats are tied to this id.
- So I suspect that in order to gain free access to character's stats and pictures, and make it work everywhere in the game without any issues we need to replace Naruko's id with Kushina's id when they change, and vice versa.
We need to know how difficult it will be for Xela. The idea is original and fun, but if it means thousands lines of code just to make it work, well, he has many other things to code at this point too.
would that work better? I did not find enough info on the sexy jutsu, but I believe it could be changed to that and no harm would be done. ( allowing for genderbending versions for things like an april first joke...)
So, apart from a cosmetic change, and some dialogue rewriting, the actual process ( stats, attributes, skills ect ) does not change at all. That is why the form semaphor is just a hint for the story. becausde, female naruto would say different things then male, or even "mama" naruto.Um, so you propose to change only pictures (naruto/naruko/kushina) and dialogues without changing the actual character?
would that work better? I did not find enough info on the sexy jutsu, but I believe it could be changed to that and no harm would be done. ( allowing for genderbending versions for things like an april first joke...)
Um, so you propose to change only pictures (naruto/naruko/kushina) and dialogues without changing the actual character?
I'm not sure how to handle this:
characters with unique quests should be unavailable for hiring and/or lover status and/or friendship status before you finish those quests. I suppose it means that every unique character with a quest should have flags that will prevent it until you disable those flags via quest?
@Cherry, may I have some male expressions from you db? I mean 00017000, 00017012, 222_char_34, 396_char_472, 545_Mgren02b, 1157_ch1157, chM0022, tc_b_oyaji_01_01a.Here it is:
I need a proper way to show dizziness.
Also, this (https://github.com/XelaPy/PyTFall/issues/67) :)
show bg story night_forest
orscene bg story night_forest
It is worth mentioning that now the game will not run if you don't have a story folder, even empty one.
As for dizziness, I like a lot the second and third ones. I will use them in different circumstances.
The first one is more like a drunk effect. While it might be useful in the future, I suppose we cannot demand modern gaming pcs from players while building a sprites based game. It took about 15% of my pc's cpu time while other effects about 5%.
It doesn't work. I dropped a picture into the story folder and used show bg story slq with dissolve. It gives me IOError: Couldn't find file 'content/gfx/bg/locations/slq.jpg', meaning it tries to find it where we keep all other bgs.
double_vision_on(img, alpha=0.5, count=10, dist=7, delay=0.4)
surprisingly renpy doesn't have anything like that, probably because it might not work with old, weak cpus.
I wonder, can't we disable everywhere the window for portrait when narrator speaks? It's empty anyway, and doesn't look good.
I wonder, can't we disable everywhere the window for portrait when narrator speaks? It's empty anyway, and doesn't look good.We can divide them, but there is a frame with the name too.
I asked quite a while back to leave Hinata out of quests/events so I figured thats why you didn't mention herIs it because you want to write your own events for her, or it's because she is used for testing in dev mode or something like that?
Is it because you want to write your own events for her
We can divide them, but there is a frame with the name too.Nah, I thought it's a matter of 1-2 lines of code. We might have a portrait for narrator too eventually, who knows.
I want to make a minigame (inside Ino's mind ::) ), when we see two bgs, and one bg we see better than another depending on who wins currently. Can we show two bgs at once with 0.5 alphas, and change alphas if needed to show one bg more than another?
show expression Transform("bg ino1", alpha=0.5) as bg1
show expression Transform("bg ino2", alpha=0.5) as bg2
menu:
"choice 1""
show expression Transform("bg ino1", alpha=0.75) as bg1
"choice 2":
show expression Transform("bg ino2", alpha=0.75) as bg2
Xela, what can you tell me about Konan's ability to turn into paper and fly away and vice versa? It means the same function you used for HitlerKaputt, but pieces should be white, and it means reverse order when she appears.
I never used so many labels in all my life... Even worse, they all are global, thus have to be unique and understandable. Pretty much any menu needs at least one label. That's inconvenient, ideally menus should have their own logic to handle multiple choices.
$ ie = object() # Ino's event.
$ ie.menu_1 = False
$ ie.read_mind = False
I have to use labels most of the time only to jump to the beginning of the current menu in order to select something else. If only renpy had something like "jump current_menu"...
label main_label:
$ show_some_menu = True
while show_some_menu:
menu:
choices...
label main_label:
texts...
call my_menu #(or jump to it, you can return here if label was called)
label my_menu:
menu:
choice 1:
jump my_menu
return
What is the meaning of while? You propose to make it false when we need to exit the menu?
I just leaned to name sh!t correctly and delete the variables after they are no longer in use at the end of events.You can delete them? How?
$ del var_name
For that we need to display cursor coordinates everywhere in dev mode. The moment you leave building/city screens and go to VN mode coordinates disappear too.
+ "id": "Drawer_1",
+ "xy": [[868, 286], [1021, 263], [1020, 312], [867, 327]]
What?
You make it sound like anyone should know how to do that offhand :) I for once have no idea where to start, calculating area of the polygon we leaned in school but that is useless for getting coordinates...It's hard for me to understand the problem because delphi builds buttons polygons based on coordinates by itself. I suppose this is a difference between free and paid/pirated engines :)
It should be a loupe, I suppose. Like this (http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%202010%20User%20Documentation/images/PTDCPM/Gator-All/English/zoom_32x32.png). I'll make a better one, this is good enough for a placeholder.
It's hard for me to understand the problem because delphi builds buttons polygons based on coordinates by itself. I suppose this is a difference between free and paid/pirated engines :)
I'm looking for ideas about simple spending time together options. I added eat together option, but we cannot use any other AA2 options, they will be out of place.
And in order to invite someone to home MC needs a better home, which is not going to happen before the next release.
*Spend time at the Cafe (We have Cafe as a location)You can select the location when inviting to eat, including the cafe.
I'm not sure how to deal with Konan. We don't have to blow her into paper and vice versa, another option is to make a decent paper whirlwind around her based on Particles for example.
Xela, can you make this (http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=5855) work? The code is almost ready for use, but I have no idea how to display the effect, it keeps telling me that it's not a displayable.
I believe you can use any kind of pictures there to make effects for characters appearing and disappearing. Including paper.
image vortex = Particles(ExplodeParticle(*args, **kwargs))
While running game code:
File "game/library/events/StoryI/Konan_part.rpy", line 26, in script
show expression (ExplodeParticle(theDisplayable = "content/items/quest/paper.png", timeDelay=0.1))
Exception: Not a displayable: <store.ExplodeParticle instance at 0x0CCEAB20>
I know, but it gave me
While running game code:Why Particles don't work with pause? ::)
File "game/library/events/StoryI/Konan_part.rpy", line 26, in script
pause
File "renpy/common/000statements.rpy", line 363, in execute_pause
renpy.pause()
AttributeError: ExplodeParticle instance has no attribute 'create'
Why Particles don't work with pause? ::)
Basically as long as I put pause after running the animation, it stops working.
I have another idea...
I mean from brothel screen. I found hide screen pyt_city_screen line for city map in other events, but not for brothel.
I mean cases when we need to run events after going to next turn, like they do in many games.
Well, the library could be a part of academy, like beach cafe is a part of beach. We have so many great bgs for library that it would be a waste to not use them somewhere.
I don't see any reasons to move jail, why should we?
Bgs for Village and Graveyard are already there, it's cemetery and hidden_village pictures in locations bgs folder. Most library pics are in my db, images/backgrounds/interior/public.
Funny, it's the first time I see how changes in json work immediatly after I save them. Matrix can see new coordinates without restarting the game.
Hm. Ideally we need a small button somewhere to stop using matrix instead of asking after every click if you want to continue. Can it be done via the same rpy where I write the logic for the scene?
Though I suppose I can show another image somewhere and use its coordinates to quit tha matrix. But I wonder how difficult is to make an actual button.
scene bg story dark_room with dissolve
call screen poly_matrix("library/events/StoryI/coordinates.json", show_exit_button=(1.0, 1.0))
"Result: [_return]"
scene bg story dark_room with dissolve
$ result = renpy.show_screen(poly_matrix, "library/events/StoryI/coordinates.json", show_exit_button=(1.0, 1.0)))
"Result: [result]"
if _return:
menu:
bla bla bla
# If False was returned label will simply continue...
Alright, with matrix and vortex the konan quest looks much better. Finally we are at the point of story when MC gets access to the village, so removing virginity quest kicks in :)
Did you see Gismo's concept for SE? He uses stars there to show the difficulty of the area.
I think it might be a good way to show the level of skill too without showing its value in gui.
I expect to use it alot in the future.
Gismo said he added an academy and a graveyard to the map.
A village is supposed to be hidden, so it could be just a small fragment of forest near the city.
How can I show 3 characters vn sprites with dissolve at the same time, not one after another?
show sprite1
show sprite2
show sprite3
with dissolve
import string as something_else
import string
...How should I know which words to not use if they are not even mentioned there (yes, I checked it before using, since delphi has this word as reserved one too) and not throwing any errors?
While running game code:
File "game/script.rpy", line 80, in script
python:
File "game/script.rpy", line 86, in <module>
chars = load_characters()
File "game/library/functions - loading data.rpy", line 49, in load_characters
dir = content_path('chars')
File "game/library/functions - loading data.rpy", line 4, in content_path
return renpy.loader.transfn('content/' + path)
Exception: Couldn't find file 'content/chars'.
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/script.rpy", line 80, in script
python:
File "C:\Users\Mason\Desktop\renpy-6.99.5-sdk\renpy\ast.py", line 797, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "C:\Users\Mason\Desktop\renpy-6.99.5-sdk\renpy\python.py", line 1448, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 86, in <module>
chars = load_characters()
File "game/library/functions - loading data.rpy", line 49, in load_characters
dir = content_path('chars')
File "game/library/functions - loading data.rpy", line 4, in content_path
return renpy.loader.transfn('content/' + path)
File "C:\Users\Mason\Desktop\renpy-6.99.5-sdk\renpy\loader.py", line 578, in transfn
raise Exception("Couldn't find file '%s'." % name)
Exception: Couldn't find file 'content/chars'.
Windows-7-6.1.7601-SP1
Ren'Py 6.99.5.602
PyTFall 0.53 One thing at a time...
Sorry for all the "new guy" troubleshooting going on here.
game/content/chars/Naruto/*Image Folders + JSONS.
game/content/rchars/elfs/*Image Folders + JSONS.
*elfs bit is not required, I just use it for better sorting.No idea... Gismo said the same. I get very visible delays when dissolving to the map screen, when I click on Window's X to close the software, when quickly moving the mouse over the new buttons with locations and etc.Nope, nothing like that.
Though I have no idea how to return to the brothel from the map :D
if not char.flag("my_flag"):
# Normal operations
else:
# Refuse in case of True
a = True
b = not a
b is False here. b = not not a
b would be True :)Question for anyone who knows:
If I have these girl packs installed in my dev game and I attempt a commit (my name on git is the same as it is here by the way) will it not commit those packs to the project?
Also, there was no "chars" or "rchars" folders inside of "content" in the project that I cloned from git, I added them and placed the girl packs within as instructed. Was this supposed to be as such, or was it intended to come with these folders and I simply cloned an incorrect version (I fail to see how that could happen, but stranger things have happened with git).
I'm just going to move myself to this thread to consolidate everything, no need to have you guys jumping back and forth to the other thread.
I cloned the project, threw in a few packs, launched it with renpy, and it loaded. I went to start a new game and got this jargon:
I'm sorry, but an uncaught exception occurred.
...
Every other button works (load game, credits, etc.) but when I attempt to launch into a new game that's what I get. That is more path errors than I care to discern for myself. Admittedly I wasn't sure where to put everything so I put it where it seemed to be appropriate. The girl packs (both their image folders and data files) I put in games/library/characters and the testing.rpy file Xela gave me I put in the top level (just in "game").
1.) Did I put everything in the right place?
2.) Am I missing something I should have?
3.) Is that error supposed to be there and has anyone gotten it before?
Sorry for all the "new guy" troubleshooting going on here. Once I get up to speed it'll be smooth sailing... Well, as smooth as it gets in game dev.
We just need proper guides...
>>>
If I have these girl packs installed in my dev game and I attempt a commit (my name on git is the same as it is here by the way) will it not commit those packs to the project?
Also, there was no "chars" or "rchars" folders inside of "content" in the project that I cloned from git, I added them and placed the girl packs within as instructed. Was this supposed to be as such, or was it intended to come with these folders and I simply cloned an incorrect version (I fail to see how that could happen, but stranger things have happened with git).
...
No, char and rchar folders are ignored at any depth, I've added you to collaborators (you now can push and pull and mes with Issues and etc.) but GitHub allows to propose merge requests so you can push even without any rights on the site, main difference is that someone would have to authorize every request for the latter.
You should have the correct version. Those folders are setup to be ignored, everything inside of them is setup to be ignored and etc.
We've switched back to Git on GitHub which is faster and seems to be more reliable that SFs Git.
Yup, we don't use it anymore. Personally, I read many bad things about it, even if we ignore its recent week of downtime which is already quite bad. Instructions for the new repo are here (http://www.pinkpetal.org/index.php?topic=3624.0).
$ char.override_portrait("portrait", "shy")
(line 180 in "GM - praise.rpy", for example)Yup, intreractions are not balanced in this regard because it's to early to do, I still didn't added some major options. There are devs shortcuts in intimacy menu that can do anything.
Good catch with override_portrait, Xela will have to code it better :)
hmm, you say "too early", but aren't we in version .53? at least according to the roadmap, isn't that where we address things like this? or have things changed? Is xela deciding all of this himself?If Xela wants to do it now, he is welcomed to. It's his roadmap, I have my own :D
When you're sure at least about the later, lets start with something simple: pytfall\game\content\gfx\interface\images\elements. In this folder are the icons we use for Elemental Alignments, if a character has more than one, we crop the image (vertically) and show one image made up of several of these icon. There are some issues with that so an you make sure these icons or of the same height/width and all have the exact same amount of transparent pixels between the image and it's boarders (or remove that spacing all together).
Roadmap is largely obsolete, outdated and was written for a simpler game concept. We spend most of our free time writing code and content for the game, my plan is to update these forum blocks before the next release to avoid endless stream of questions, sadly I don't have time to both write the code and keep documentation, roadmaps, todos and etc up to date at the same time.
===
I'll start another issue with the portrait thing when I can.
===
Dark is right about it being to early, we're slowly advancing relationship concepts, writing more stuff for personality type, updating/rewriting code for jobs/locations and etc. Some things needs to take proper shape before we finalize interactions. Game is not written of a fixed concept, we're trying different things, testing, throwing stuff out/keeping it and etc. Writing accept to a job after that's done will take me an hour, writing it now and keeping it up to date every time I tweak the code or Dark tweaks the content can only result in time wasted.
>>>
It's development version, hence not a playable one, although keep debugging what you can! :) These are two new issues that need to be fixed regardless.
Do you need these to be the same size and resolution as well? There are larger and smaller pictures. Most elements are the same size, but the ice element is about half the size of the rest and the neutral element is about twice the size as the rest. Would it be helpful to resize them to be the same size as the rest?
I don't mean to butt in, but I'm thinking that is exactly what he wants. not only same size and pixel resolution, but the same number of buffer alpha pixels so that when the pictures are cropped together, the total picture will still be a circle. l
...
So, to summarize. There are going to be multiple styles of play to "win".
this can probably be shortened to: empire management and fighting, (or sim and rpg)
girls can be acquired via:
- slave market
- relationship building (girls meets)
- finding girls through exploration? (is this a part of the game now? like whore master?)
- (possibly events of some sort?)
are players expected to do a little bit of everything to progress? or can they choose only one and still manage to get by?
is this roughly similar to what's happening? or how far off is this?
Push and we'll see. You don't need to worry about it so much, reverting your changes is just one/two mouse clicks or one line of console code. What you describe is exactly what was needed, I need to pull your changes in order to check if it was done correctly (by adding all elements to any of the characters and see how Ren'Py crops the new pictures).
Weird. Notepad+ built-in dictionary claims that I need to write "know each other" like "know eachother". Is it English neologism or something?
Game is supposed to be an open world environment with many things to do/paths to take/stories to follow. That's a premise I am working off right now.
Committed and pushed, but it isn't showing up on GitHub. It showed the changes, staged them, and pushed them, gave me the green check and "up to date" message, but I'm not seeing the update on the git repo.
and finally, I'm wondering more about the "proposition" option.
perhaps ... will players have a "slums" area where it'll be easier to hire cheap, easy, low maintenance girls?
if the girls are desperate, shouldn't they be easier to get?
or is the slave market going to be the only source like that?
Yeah, I'm not seeing it either. Maybe it only did it locally? Github is new to me, but at SF you needed a username /password and the ssh link to push properly. Not sure if this one needs it or not.
I don't mean to butt in, but I'm thinking that is exactly what he wants. not only same size and pixel resolution, but the same number of buffer alpha pixels so that when the pictures are cropped together, the total picture will still be a circle. like:Yup. That's how the original artist made them, I just removed background. They are not perfect circles, and it brings problems for multielemental characters when we take fragments of elemental icons and show them together.
In the first it references each subject as it's own entity, in the second both apples (subjects) are treated as one object. It's really superfluous, so don't worry about it. Everyone who knows basic English will still know what you mean, only literature and english snobs will snuff you for it really.I see, thanks for the clarification.
or is it no longer supposed to be that simple?
and finally, I'm wondering more about the "proposition" option.
perhaps ... will players have a "slums" area where it'll be easier to hire cheap, easy, low maintenance girls?
if the girls are desperate, shouldn't they be easier to get?
or is the slave market going to be the only source like that?
This...
And this.
>>>
Hiring process will depend a lot on the mcs level, stats and what kind of businesses he already owns + financial situation. Maybe on reputation/fame as well but we are not yet sure how to utilize those in the game properly.
At the moment, I am really interested in making sure the girls meets way of acquiring girls is doable.It's more complicated than it might seem.
If you recall SIBR1x, a player could get 1 girl in a week through conversation (1 week was the time she was in the same place before moving) or roughly 5 days, assuming the player picked all the correct options (i.e. best case senario). and later in the game could get a girl in 1 - 2 days with super effective items and/or money.
I'm not saying this game should be similar. But my question would be: How many days should it take before acquiring a girl, through only conversation?
or is this not supposed to be possible?
Because currently this game also doesn't give a freebie girl at the beginning either (or will it?)
how many days via proper items?
how many days via money?
and then later in the game with more charisma and item effects, what the best possible time would be to get a girl?
I can see it on Github and my pc.
Committed and pushed, but it isn't showing up on GitHub. It showed the changes, staged them, and pushed them, gave me the green check and "up to date" message, but I'm not seeing the update on the git repo.
It's more complicated than it might seem.
- You need to use simple options at first, like chat. You cannot use complex, advanced options from the beginning because characters simply refuse without some base disposition.
With some basic disposition you can try more advanced stuff like eat together or give a gift, and they will give more disposition than simple ones.
- Disposition =/= hiring for work. I don't know if we will add social levels, but we can just check level and gold. Poor characters will be available with disposition close to 0.
Ideally, we could use social levels here, but they require a clear concept which we lack.
- It's very costly to quickly rise disposition via money. Every time the game checks how much money the girl already has. And if you propose not enough compared to her amount of cash, it won't work. They spend money little by little though, but basically it's just another option and not an independent way.
- We don't have enough gifts yet to make them important. We decided to use special items that cannot be used or equipped as gifts, but we really could use at least 50 while currently we have 22.
Now, if by acquiring a girl you mean hiring, it should be based on many things and in the case of weak, low level characters rather simple.
And if you mean drag them to bed, that's a matter of 600-800 disposition depending on traits, or simply money if the character is working in sex industry.
I personally would like having a "social level". But for the main character instead of gold/level check, wouldn't it be better if it were affected by what items you are wearing, and maybe thresholds for intelligence and charisma? (or maybe just the items) that way, you could have events or checks for high "social level" as well as low "social level", to wear cheap clothes to maybe get into a shady area. just my thoughts.basically, instead of every girl starting at social level 0, higher level girls can be found and perhaps they would come with higher training levels or even already equipped items. But they would be virtually impossible to hire/court unless the mc had similar or higher social level. (or could be lower with some event)
and for the slaves it could be based on education levels (from taking classes or training) with bonuses from items.
Yep, push went through. Let me know if it works for you. It "should" but if not I don't know what more I could do in this case. It sounds as though you're simply merging spheres to make the mult-elem displays, which should all line up fine.Pull and update worked on this side.
If that was handled properly, I'm ready for my next assignment.
Git:1
Pseudo:1
Time for a tie breaker.
Did the push again, went through. Everyone should be able to pull it now. Checked git and the update is posted. *thumbs up*
hmm, so this will all work late-game. But early game; isn't the player screwed unless they use the slave market?
also, I just went in there and saw that level 1 girls (beggars) are going for ~3k gold. holy expensive!
I thought a meal is ~10 gold.
the levels could be from 0 - 10 where 0 is beggar and 10 is the equivalent of royalty. players would start at 0 (or 1 maybe with certain pre-game choices?)If you want to build a concept, you will have to think through all details.
too simple? too complicated?
If that was handled properly, I'm ready for my next assignment.If you want to work with graphics, I can link you our db folders and you can make some gifts items.
Yey! (take a look at before after images)
If that was handled properly, I'm ready for my next assignment.
{
"name": "King Slime",
"desc": "This slime became big enough to have rudiments of intelligence.",
"front_row": 0,
"battle_sprite": "content/npc/mobs/a.png",
"portrait": "content/npc/mobs/a1.png",
"race": "Slime",
"locations": [],
"min_lvl": 35,
"basetraits": [
"Juggernaut", "Mage"
],
"stats": {
"attack": 20,
"defence": 50,
"magic": 30,
"agility": 40,
"luck": 10,
"charisma": 40
},
"skills": {},
"traits": ["Water", "Slime"],
"attack_skills": [
"FistAttack"
],
"magic_skills": [
"Watera",
"Waterga"
]
},
{
"name": "Samurai",
"desc": "A fast and agile swordsman.",
"front_row": 1,
"battle_sprite": "content/npc/mobs/g.png",
"portrait": "content/npc/mobs/g1.png",
"race": "Human",
"locations": [],
"min_lvl": 10,
"basetraits": [
"Assassin", "Warrior"
],
"stats": {
"attack": 30,
"defence": 15,
"magic": 15,
"agility": 25,
"luck": 15,
"charisma": 15
},
"skills": {},
"traits": ["Human", "Neutral"],
"attack_skills": [
"SwordAttack"
],
"magic_skills": [
]
},
Critique: If the elements are not required to be parsed in any particular order for the multi-elem sphere I might suggest a new order because:
1.) It looks like the ice orb (second from the right) has a small bit jutting out, but that is just the graphic I assure you it is an identical size.
2.) The earth element at the end of the line, seems to be slightly cropped. I can lower the res to make it smaller if it has to fit within a certain window, but the neutral element was 416x416 or something like that and it fit fine before I lowered the res.
The rest of it looks fine. So I'd suggest swapping the ice and earth elements with some other two.
If you want to work with graphics, I can link you our db folders and you can make some gifts items.
If you prefer to create new graphics, you could try to make unique icons for traits. But it won't be easy.
If you want to work with lines or interactions coding, I can tell how interactions and lines can be improved.
If you want to make packs, by all means go ahead and do any packs you want. You will need my tagger and some h-pictures sources, I can give links that I personally use for pack making.
If you want to do something related to pure coding, ask Xela :)
If anyone is willing to come up with personal quest for Tenten, that would be cool too. I have ideas or ready quests for everyone else from naruto pack, but I stuck with her.
I'll get right on it right after I ask this, how do I open a .json file? I tried looking for an option through renpy and couldn't locate one.
Use notepad ++ (or any text editor)
Icons for traits are more complex and creative task. You saw our elemental icons and maybe also race and main personality icons too.
So the idea to to have smaller, less detailed but still understandable icons for all or most of the traits. Our traits are in game/contant/db, in jsons starting with "traits_".
To make an example, try to switch google into searching images mode and enter "boobs icons".
Since you have to search for decent pictures and edit them, it's obviously much more difficult than gifts. That's how I made main personality icons half a year ago.
Even in the case of boobs you will need 4 similar, yet different icons for all 4 traits.
If anyone is willing to come up with personal quest for Tenten, that would be cool too. I have ideas or ready quests for everyone else from naruto pack, but I stuck with her.
Yup, you did, thanks. If you are interested in helping the project, there are other characters that could use ideas for small events/quests.
{
"id": "Exotic Bouquet",
"icon": "content/items/gift/eb.png",
"desc": "This tastefully-arranged bouquet is comprised of many types of flowers that usually only grow in faraway lands. It's colorful, it's gorgeous, and it shows that you're willing to spend a lot of money to impress.",
"price": 300,
"chance": 65,
"dismod": 30,
"cblock": 5,
"infinite": false,
"locations": ["General Store"],
"traits": {"Ill-mannered": 40, "Not Human": 45, "Tomboy": -20, "Noble": 15}
Question1: Does anyone mind if I update a few more of the npc graphics? (in particular, the which and the tailor shop... possibly the armor shop/forge girl as well)
Do not change the tailor and café girls please. I manage those. (something is wrong with them?)
Question1: Does anyone mind if I update a few more of the npc graphics? (in particular, the which and the tailor shop... possibly the armor shop/forge girl as well)
Question2: Can I create custom icons for each of the shops instead of having the same "pointer" style icon for every one? I can also change the .json file to reflect this change, I've learned my way around them.
Question3: I see this layout for all items, what does it mean?Code: [Select]
{
"id": "Exotic Bouquet",
"icon": "content/items/gift/eb.png",
"desc": "This tastefully-arranged bouquet is comprised of many types of flowers that usually only grow in faraway lands. It's colorful, it's gorgeous, and it shows that you're willing to spend a lot of money to impress.",
"price": 300,
"chance": 65,
"dismod": 30,
"cblock": 5,
"infinite": false,
"locations": ["General Store"],
"traits": {"Ill-mannered": 40, "Not Human": 45, "Tomboy": -20, "Noble": 15}
Is there a manual somewhere that explains what all of this means? I assume the following:
id, icon, price,infinite and locations are all obvious
chance: odds of the item showing up in shop (out of 100) every week or day. (each time new items are generated)
dismod: no idea
cblock: no idea
traits: how much the item affects a certain trait (0 = trait loss, 100 = trait gain) OR how much it effects a slaves happiness based on the whether or not they have the trait
I'm looking to start designing the new gifts that are to be mostly based on their compatibility with traits so this info will be very helpful. Also, if this is the old format of how gifts are constructed, I'd like a heads up on the new one.
On an end note: I am currently working on making the smaller icons that correlate to traits, but I will switch off between all of this depending on if I get burnt out on one or the other. Always good to have a lot of things to do. Once I am done with a few trait icons, if I can't figure out how to implement them, I'll ask about that.
Do not change the tailor and café girls please. I manage those. (something is wrong with them?)
Wrong, not necessarily, but the tailor girl in particular seems to be a bit behind the times. I simply feel that there are higher quality image choices out there....sorry, you mean that assistant schoolgirl, you can replace her freely, she's just a relic from first version I guess. Just keep tha tailor lady be.
dismod stands for "disposition modifier" but we decided not to use it for now.Wrong, we decided to not use it for usual items. For gifts it is the base value for changing disposition.
cblock blocks an item to be used again for the "5" amount of days in this case. It was not meant to be used with gifts, maybe we've agreed to use it in gift context to make gifts useless for the said amount of days but I do not recall writing actual code for that.Yup, we had such an agreement.
Question5: Because the game is free I assume it is ok to use well known/copyrighted girls for the npc updates? Correct me if I am wrong. Also, I may stash a few backups in case we run into an oddity with someone releasing a shopkeep in a girl pack or something. Or do we simply want to avoid implementing any girl that we might want to be a slave as a shopkeep (a.k.a. keep it generic)?Yeap, we don't care about copyright. Sometimes I even delete copyrighting signs from images if they are too big and noticeable for my taste.
Well there is a cblock on every gift item, some up to 30 days for high-ticket items. Should I implement cblock in the new ones or just leave it out? (If you and Dark need to discuss this just get back to me on it whenever you know what's up).I figured that we shouldn't allow players to spam the same gift over and over, and cblock was the only way to prevent it back then. I still believe that we shouldn't allow spamming gifts. You or Xela could code another way instead of cblock if you don't like it :)
Wrong, we decided to not use it for usual items. For gifts it is the base value for changing disposition.
Also there are fields like "occupations": {"Warrior": 30} which used to work with occupations before we made them class traits. I suppose we will need to code a new field
this sort of means "universal gifts" which I wanted to avoid, it should be used with a lot of reservation... Most gifts should prolly have this set to 0.Yes, we'll have to balance it too, but it's not so bad when we actively use cblock. Such gifts simply can have weeks of cooldown.
Xela, I recall you mentioned something about custom buttons that appear in gui during quests or something like that. I suppose we'll need them to actually make my quests work, because I cannot think of a better way to advance in many cases.
...sorry, you mean that assistant schoolgirl, you can replace her freely, she's just a relic from first version I guess. Just keep tha tailor lady be.
I figured that we shouldn't allow players to spam the same gift over and over, and cblock was the only way to prevent it back then. I still believe that we shouldn't allow spamming gifts. You or Xela could code another way instead of cblock if you don't like it :)
I mean buttons inside GMs too, not just hovering somewhere. I'm actually going to use matrix inside village to search for quests, but when you already found a quest, I want buttons to advance through it.
But I'm not seeing the problem with the "dismod" method. Xela said it makes it them "universal gifts" meaning it affects all girls and so to avoid this he said most dismods will be set to 0 so that only traits affect it's disposition bonus, which makes sense. Still I'm not seeing the problem with universal gifts, they'll take more balancing, but I think the simplicity of the system is agreeable. Either way you'd have a simpler system with more complex balancing or a more complex system with simpler balancing.
Yup, they are up to date. You can ignore traits_testing and traits_training, they are for testing and using in special cases. Also traits_class_mobs and traits_class jsons, they contain classes traits which will be handled differently.
That leaves traits_body, traits_modificators and traits_skill. At very least try to make icons for the first two, I expect the last one to be rather difficult.
Should I fix old traits in commented out sections too? Like def create_customer(self, name="") section in classes - unique buildings.rpy for example, favtraits are commented out.
For quests, when you accepted personal character's quest and fulfilled its current conditions, there should be a (custom?) button inside GMs that will allow you advance to the next stage of the quest. Another case is when you accepted personal character's quest to do something unique together with the character N times, there should be a button in GMs allowing to do it.
label event_to_interaction:
Should I fix old traits in commented out sections too? Like def create_customer(self, name="") section in classes - unique buildings.rpy for example, favtraits are commented out.
We have that in place and you know how to work it... I know that you've edited all levels of Interaction menus!Yes, I can. It means however that every single personal quest for every single character will require a new modification of pyt - screens - interactions file. Sometimes more than just one. It hardly could be called a good solution for modding or even developing, the file will become messy very quickly.
Yes, I can. It means however that every single personal quest for every single character will require a new modification of pyt - screens - interactions file. Sometimes more than just one. It hardly could be called a good solution for modding or even developing, the file will become messy very quickly.
What I mean is a system when there are hidden buttons at GM screen that become visible when a character has a quest flag, they lead to the labels you want, they have custom names that you can set somewhere without modding the main screen rpy file.
Basically, we check if there are quests that require buttons for the current character when we enter her GM, and if needed we make visible special buttons with custom names that you can set inside the quest logic.
Thewlis is logging in to FP but he never writes anything or answers to PMs. Even if I dive into his code, I doubt that I can come up with a better solution. Maybe I can help in a sense of generalizing the approach like writing a line of conditioning code that will check if a character has any True flag that starts with "event_to_interactions" and we agree on a MAX of one label for a character called for example:Code: [Select]label event_to_interaction:
and rest is handled from within that label. That way any modder can use it but since we have no modders atm that are capable of writing that level of quests, it may not (yet) be required.
While running game code:
File "game/library/screens/locations/pyt - screen - realtor.rpy", line 46, in script
$ market_buildings = sorted(set(chain(brothels.values(), buildings.values())) - set(hero.buildings), key = lambda x: x.id)
File "game/library/screens/locations/pyt - screen - realtor.rpy", line 46, in <module>
$ market_buildings = sorted(set(chain(brothels.values(), buildings.values())) - set(hero.buildings), key = lambda x: x.id)
AttributeError: 'RevertableList' object has no attribute 'values'
Well, you proposition is a bit vague. How I imagine it exactly:
- Either new submenu for quest buttons (called events for example) that is hidden when there are no quest options available, or simply buttons that have a different color. This way players will immediately notice quest options in GMs.
- If character has a True flag starting with event_to_interactions, a quest button appears inside GMs that will lead to specific label, for example label event_to_interactions_lbl_"name of that true flag without "event_to_interactions" part". That will allow us to use multiple buttons.
- The difficult part here is to use custom names for those quest buttons. I'm not even sure if it's possible or where to set those names in the code to make it work.
Yes, they actually look very nice!
However, icons should be closer to squares than rectangles, otherwise they will take too much space in gui. I'm afraid we'll have to cut either the head or the torso a bit.
When they will be finished, you can just create a folder for them in game\content\gfx\interface\images (other icons have folders there too) and push it to the repo. Files names don't matter, we tie icons to traits manually in traits jsons.
Keep it, traits gui background is not very suitable for transparent icons.
QQ is this game still under dev and the latest version is hidden in the 300+ pages or is the dev of this game stopped?
No i know where the latest alpha is, but i just wanted to make sure that this really cool game is still under dev and not abandoned :P i guess i could have read the recent posts here but i kinda got lazy.
How can I set some flag to all characters in the game at once?
Question: Should I keep the white background or make it a PNG with alpha so that it is the same color as the background on which it is placed?
Xela, I don't understand some stuff about pytfall.world_actions.add that you used to add actions at several locations screens.
For example, pytfall.world_actions.add("angelica", "Find Angelica", Jump("angelica_menu"), condition=Iff(global_flag_complex("met_angelica"))). I figured that "Find Angelica" is the name of the button, Jump("angelica_menu") is where we jump when we press it, condition is obvious. What is "angelica" part then?
Alright, I'm tired of fighting with errors I've never even seen before :D
I made village location and added matrix there. The idea is to run either a scene or GM with a certain character once you select a specific building.
Scenes are fine, but I cannot make GMs work. The idea is to replace village bg with some another bg and then run GMs there with specific character using her vnsprite. And after GMs are finished, return to the village screen.
.
Shouldn't they look like other trait icons? We should have some standard, I don't really know where to place this in GUI.
Yep, but the thing is, they are the first of the trait icons
Example: Big Breasts (small square image of woman)
Adventurer (small square image of sword or treasure)
Not Human (small square image of devil tail or halo)
Construct (small square image of robot-ish thing, or statue or something)
like so... but I don't even know if you will be able to discern what the images are at the size they would have to be to fit inside the labels with the words.
_
They would appear about the size of this > l_l literally, but a little shorter, think square rather than rectangle. and that will be about its literal size. If it goes where I think it's going, if it is at that location (and that size). I'm not actually sure they are worth having, as they will likely not be fully discernible from one another if given similar images such as the breast size one's that have already been developed. Thoughts?
Why... you need to iterate over the chars container but I would like to avoid setting flags to all chars, lack of such a flag is usually the same as a flag.Well, not really all chars, more like all chars with the same origin. For example, to forbid certain actions with characters from one specific pack until you complete their personal quests. I can make it manually one by one, but it's messy.
Shouldn't they look like other trait icons? We should have some standard, I don't really know where to place this in GUI.I personally want to see small traits icons next to their names in gui.
They aren't really as Personality, Race and Elements are also traits and have icons.Yup, these are special cases. For other traits we could use simplier and smaller icons.
It does make sense to make icons for Body and Breast traits for a simple reason of one of those traits being a requirement for any character. Maybe even male icons as well for the future but not for every single trait in the game!I can say that we unlikely will see many new major traits. You should know by now how it's difficult to maintain too many traits.
Well, not really all chars, more like all chars with the same origin. For example, to forbid certain actions with characters from one specific pack until you complete their personal quests. I can make it manually one by one, but it's messy.
I personally want to see small traits icons next to their names in gui.
Yup, these are special cases. For other traits we could use simplier and smaller icons.
I can say that we unlikely will see many new major traits. You should know by now how it's difficult to maintain too many traits.
There will be new traits, but most of them will be minor, and won't need icons.
Even so, it's not any sort of a priority right now and those icons would still have to be a lot smaller... also new traits will require them as well and if all artists will be busy/disappear, we'd be screwedWhy should we bother with size if we can resize pics ingame? Also, they are quite simple right now, you basically take a picture you like and replace one part with one color and other part with another color. This way even without artists it's totally possible to quickly make them.
Depends... we'll have a lot of new occupation traits after the next release (maybe even before) and a bunch of support traits will be required as well. Traits are not difficult to maintain in the code as long as they can be well sorted. If you need help maintaining JSONs, we can try recruiting some people or you can as CW who more often than not can take out tasks quickly if they are clearly explained.I never even considered to make icons for classes traits. I mean traits from body and modificatiors traits jsons mostly.
Is there anything (graphically) of "notable" priority, something that "needs" to be done for the next release? That's what I'd like to work on, what we need.
If there isn't anything like that I will construct a roadmap for myself from what has already been mentioned (items, traits, etc.) and go about completing it.
About running GMs when I need it... It's another side of that system from this (https://github.com/XelaPy/PyTFall/issues/58) issue, when you can go to character house and talk to her anytime.
However, that system should be used for chars that don't have a personal story and location.
I want to make a new story (and a small location if needed) with every new release based on some pack or packs. Many chars with personal quests will have a place where you can find them and talk to them. It means that, unless they are slaves or dead, you can go there and run either GMs or interactions screen with custom background and probably vnsprite.
Do you need me to take this out tonight? My plan was to put 3 or 4 hours into jobs/buildings again. You can just prepare the content and we'll make it work later. If you need this, I'll take this issue out tonight instead.I'm now not so sure that we need that system allowing to find a girl anywhere. It sounds too simple, and we also could use matrix or something else to do it... Don't do anything about it for now, I'll think about it more.
You usually can ignore Xela when he says that we don't need this or that as long as you have a result in terms of new content. He said the same thing when I was making icons for other traits or additional spells for BE. Guess what, now they are in game and look pretty good :)
Graphically you can also do:
- icons for gifts, with names and descriptions. Without any logic like traits and cblock, since we discussed before possible change of gifts logics.
- Items in general. It's very simple, and we always can use more.
- New packs. Personally, I make packs from time to time not because we need them a lot, but because I enjoy it, and they always will be useful no matter what.
- Spells for BE. It's not hard as well, and will be useful no matter what even if we change how they work.
Gifts are priority, other stuff is not.
I'm now not so sure that we need that system allowing to find a girl anywhere. It sounds too simple, and we also could use matrix or something else to do it... Don't do anything about it for now, I'll think about it more.
I can say for sure though that I have to use GMs and interactions freely, ie run them anywhere, with any character and bg, and usually using vnsprite.
Ideally the game should check by itself if the character is hired ot not, and run interactions instead of GMs for hired ones. But if it will require a lot of time, it could wait of course until you finish with jobs.
Also I need to check somehow if the character is dead or not. Should I just check for health <=0?
if not char.alive:
# Character is dead...
Code: [Select]if not char.alive:
# Character is dead...
Should. If you need to and that to string conditions: "char.alive" will make sure that the event/button will only appear if character is alive.
*I'll look into a possibility of preventing dead chars from interacting with the open world, there should already be some of these checks in place.
char.is_available
Doesn't making interface require a fair bit of coding? I've seen Gismo's pushes, it's 10 times more complex than anything related to pure content.
That is perfectly reasonable:That doesn't work btw.
for c in chars:
if c.origin = "From Outer Space":
c.set_flag("Doesnt_like_to_mingle_with_mere_earthlings")
That doesn't work btw.
'NoneType' object has no attribute 'values'...
This is stupid. Just try it yourself when you will have time.
for i in chars.values():
if i.origin == "Some Origin":
i.set_glag("Some Flag")
Also, I need to run events after the next day. I can do it via $ register_event_in_label("reflection_quest_part_two", quest="Settling in the city", locations=["mainscreen"], run_conditions=["hero.gold >= 3000"], dice=100, max_runs=1)
but during it brothel interface prevents me from seeing anything that is going on in the event. So I need to know how to hide it.
The game doesn't show where it jumps when you go to brothel screen, unlike any other jumps we have...
I don't know why, but mainscreen works right after next day for me as well.
So far conditions system for quests is vague as hell. Some simply don't work at all ("pytfall.world_quests.get('Sixth Sense').stage = 1"). I have to use trigger_type="auto" and jump to needed events directly using checks outside of quests checks.
I wonder how well Thewlis tested this stuff...
if pytfall.world_quests.get("Sixth Sense")What does this check do?
What does this check do?
None.stage > 1
python:to your testing json if you want quests working as intended. These flags will prevent related events inside all interactions and GMs if needed until char quest will be finished.
for i in chars.values():
if i.origin == "Naruto":
i.set_flag("quest_cannot_be_hired", True)
i.set_flag("quest_cannot_be_fucked", True)
i.set_flag("quest_cannot_be_lover", True)
def has_failed(self, quest):So if I want check if the quest was finished, it should be like if is_complete(pytfall.world_quests.get('Sixth Sense') )? Or simply is_complete ('Sixth Sense')?
"""
Whether a quest has been failed.
"""
if isinstance(quest, str): quest = self.get(quest)
return quest in self.failed
def is_active(self, quest):
"""
Whether a quest is active.
"""
if isinstance(quest, str): quest = self.get(quest)
return quest in self.active
def is_complete(self, quest):
"""
Whether a quest is complete.
"""
if isinstance(quest, str): quest = self.get(quest)
return quest in self.complete
def check(self, stage, strict, *flags):But I don't understand how to use it, the way of writing functions in python is very different from what I get used to :)
"""
Checks whether the quest is at a certain state.
Used for easy checking through WorldEvent.run_conditions.
"""
if strict and self.stage != stage: return False
if not strict and self.stage < stage: return False
for i in flags:
if i not in self: return False
And another condition in quest refuses to work... Do they even work at all, aside from those in the idol example?
I pushed it.
$ register_event_in_label("karin_finish_quest", quest="Sixth Sense", locations=["hiddenVillage_entrance"], run_conditions=["not('Virgin' in chars['Karin'].traits)"], trigger_type="auto", max_runs=1)
Ie when you go to location hiddenVillage_entrance it should start the label if she doesn't have a trait. Of course it doesn't work just as I suspected. I f###ing give up, I need clear instructions how this stuff works.
Yeah, whenever I use events with conditions that are different from those in the idol example, they don't work. My guess is it wasn't tested properly (just like schools, but I tested them and Thewlis fixed them).
Of course there is also a chance that the system is so complex that it requires a very deep understanding in order to make it work. But it's not good too.
For example, stuff like quest=event.quest didn't worked for me so far. With it you in theory don't need to write the name of the quest inside the event that is a part of that quest.
File "game/library/events/StoryI/Karin_part.rpy", line 8, in scripteven though I literally copied it from the idol quest.
label testq:
File "C:\Pytfall\RenPy\renpy\ast.py", line 743, in execute
values = apply_arguments(self.parameters, renpy.store._args, renpy.store._kwargs)
File "C:\Pytfall\RenPy\renpy\ast.py", line 144, in apply_arguments
raise Exception("Arguments supplied, but parameter list not present")
Exception: Arguments supplied, but parameter list not present
A fresh example. I register a quest.
qtest = register_quest("Test Quest")
register_event("testq", quest="Test Quest", locations=["hiddenVillage_entrance"], dice=100, trigger_type="auto", max_runs=1, start_day=1)
label testq:
"U r one cheeky bugger m8 I swear!"
$ pytfall.world_quests.get("Test Quest").next_in_label("1v1 me irl")
$ pytfall.world_events.kill_event("testq")
It's just like the last stage of the idol was made. Guess what, I have
even though I literally copied it from the idol quest.
register_event("testq", quest="Test Quest", locations=["hiddenVillage_entrance"], dice=100, trigger_type="auto", jump=True, max_runs=1, start_day=1)
Is there are specific time that we need it by?We never set a time frame because it's a hobby, not a job :)
Gismo, don't forget about a place for elements icons. Currently MC doesn't have them in profile, but he should have them too.
Tagger update. I added a button that opens the folder of the currently selected picture in windows explorer and selects that file there. Might be useful for quick editing.This will be useful, I do that alot :) Thanks
I finally get to play that Old Hunsmann's ST game so I finally understand some of the old posts here. It's really good.All his games are extremely cruel though. At some point I decided that there is too much gore and cannibalism for me, and stopped playing his games.
Hey gents, sorry for my absence, I've been busy reconstructing my resume, applying to jobs, and remodeling part of my house. I found your post about the bestiary page design/layout back on 372 and I'll get to work on that soon. (Tomorrow) Is there are specific time that we need it by?
All his games are extremely cruel though. At some point I decided that there is too much gore and cannibalism for me, and stopped playing his games.
Speaking of single letters, in the idol quest there it stuff like q = register_quest("Strange Idol") in init. I use it too just in case.
But after that we never use that q anymore, we use "Strange Idol" name directly. So why do we even do it?
Here is my push. (done with hero sprites...)
- New Hero profile screen
- Changed the brightness of many elements and screens under one common style (not yet all redone)
- Add circle hero portraits (tag - cportrait)
- Add hero profile picture (tag - sprofile)
That's complicated...
They in theory could be encountered inside SE (simulated exploration, where you send parties to explore lands around the city). But you don't actually SEE them in action, since you cannot send MC to SE. And all fights in SE go off-screen, inside the code.
So you can encounter them in arena and certain areas inside SE, but you can SEE them in arena only. Well, at least for now. I can't add events with BE until Xela will make a simpler function for it, but I will. And then there will be events too.
Yeah, quests seem to work as usual without that init part. I'll remove it.No, I was wrong. It worked because I had the same init part in two places. Once I deleted all inits, quests stopped working.
I wonder if it's safe to use q everywhere, or it's better to come up with unique names.
if not(pytfall.world_quests.check_stage("Uzumaki Clan", 1)):to start scenes when needed. And it works pretty good until you go to the next day.
"""Safe way of checking a stage of a quest.
Will return None if quest is not active stage is below the requested stage value and True if it equals or above.
"""
not(pytfall.world_quests.check_stage("Uzumaki Clan", 1)):should return true as long as stage is 0 (or none) and false if it's 1 or higher. And does it as long as you won't go to the next day.
...
...As you see, at stage 0 or none we run naruko_first_meeting, where eventually quest stage becomes 1. After that the check should never ever work again in theory. And it never works indeed. Until you go to the next day, even if you finished the quest already.
elif _return == "House_2":
if not(pytfall.world_quests.check_stage("Uzumaki Clan", 1)):
jump naruko_first_meeting
label naruko_first_meeting:
...
$ pytfall.world_quests.get("Uzumaki Clan").next_in_label("quest stage description")
def check_stage(self, quest, stage):
"""Safe way of checking a stage of a quest.
Will return True if quest is at the requested stage and active, False otherwise.
"""
if self.is_active(quest) and self.get(quest).stage == stage:
return True
else:
return False
def stage_goe(self, quest, stage):
"""Safe way of checking a stage of a quest.
Will return True if quest is active and it's stage equals/above the current stage, False otherwise.
"""
if self.is_active(quest) and self.get(quest).stage >= stage:
return True
else:
return False
New
(http://s22.postimg.org/ech2ffnkd/image.jpg) (http://postimg.org/image/ech2ffnkd/)
I do not share your hunch about the next day resetting quests stages although that system is untested... If you get a chance, when you believe that a quest has reset itself, open console and:I believe the correct line should be pytfall.world_quests.get('Sixth Sense').stage.
pytfall.world_manager.get("Quest Name").stage
to check if it is indeed correct. I'll update the quest methods again to make more sense and call it a night.
I've checked the gfx > frames and gfx > interface > buttons folders.Other elements of gui are in gfx/frame.
def check_quest_finished(self, quest):which should be false as long as quest is not completed or failed. That would allow me to avoid running the same quest again and again.
"""Safe way of checking a quest.
Will return True if quest is completed or failed, False otherwise.
"""
if self.is_complete(quest) or self.has_failed(quest):
return True
else:
return False
when I press shift+o the game freezes for ~10-20 seconds before showing the console.
I did some testing, looks like it's not about quest stage, it's about quest status.
For example, I made a function which should be false as long as quest is not completed or failed. That would allow me to avoid running the same quest again and again.
And for some reason after quest stage became 1 (but it wasn't finished or failed yet), that function started to give True.
I think self.is_active(quest) part that you used in your functions could mess with my checks as well...
Can't even begin to guess wtf this is...A memory leak or something.
I've checked the gfx > frames and gfx > interface > buttons folders. I assume you've used mostly things from these to locations with some manipulations applied. Should I just play around with them until I get a similar look/feel or do you have an easier/more direct way that I could go about this?
A memory leak or something.
Before shift+o it took about 420'000 KB of ram. When it freezes, it goes up to 720'000 KB. After showing the console it goes down to 520'000 KB.
Oh, and it also takes all cpu time of one cpu core when it freezes.
One more thing, when I call the console at the brothel screen, after the freeze it becomes black. And it stays black until I close the console.
But at the first day it doesn't become black.
Console also stops animation (gold coin) at the city map, but not at the first day.
Since I'm not sure about the level of quest system's adequacy right now, thus cannot make events, I'm going to learn some python via codeacademy.
def next_day(self):should be bad for existing quest structure because I don't use events since they are too tricky. However I never had that message about garbage quests, weird.
"""
Fails quests that have no valid events.
"""
garbage = list()
# Find incomplete quests with no existing events
for i in self.active:
for j in pytfall.world_events.events_cache:
if j.quest == i.name:
break
else:
if not i.manual: garbage.append(i)
while len(garbage) > 0:
devlog.warning("Garbage Quest found! \"%s\" was failed."%garbage[0].name)
self.fail_quest(garbage.pop())
Yup, removing that system makes quests work as intended. I disabled that system, you will need to rewrite it if you want to use it somehow.
def __init__(self, name, auto=None, manual=None):
manual = Whether the quest will be manually updated, instead of by event. Prevents garbage failing.
I don't understand the difference between double quest functions, like register_quest and register_quest_in_label.
I mean, why would you want to register a quest in label when you can do it in init?
Yes, about menus... Why menu buttons are so huge even when we have short options like "Yes"/"No"? Ideally they should be a bit larger than the longest line in menu, in your case than the second line asking to teach spells. When you have a short option with a huge button, it's not very pretty.
There (http://fuckyeahrenpy.tumblr.com/post/84954131323/tutorial-easily-changing-the-style-of-in-game) is something about menu styles.
*Also I rewrote stage checking because I need to check stage like ==, not >=. That might break existing quests, I'm afraid :)
I think we do it wrong. Stage checking function should return the number of the current quest stage instead of true/false. And for example -1 for non active quests. This way you can check anything with just one function.
Calling it a night, didn't get much done tonight, but I got a good start. Here are two previews of the layout that I just started. One with a red/gold scheme and one where I tried to incorporate the old bg for the bestiary.
Any pointers?
if char.is_available:
# Do something
Method checked if stage is active because if you just try to check stage of a dead quest, game will crash (aka None.stage > 1 Error you posted couple of days ago).I don't think it works like this. I made a function that returns stage of the quest or -1 if it's not active.
I mean, if you want to check if the quest exists, it's useless to check if it's active. You could check stage >=0 with try/except for example (I'm not gonna to, all my quests exist so far).
It's also useless to check if a quest active in the first place when you could check stage instead (==0 for non active).
I also made interactions_run_gm_anywhere function, it's supposed to run either gms or interactions (if hired) in the character house, and do neither if the character is a slave or not available.
I want it to use backgrounds based on social status eventually, for now I set them manually.
$ chars["Naruko_Uzumaki"].set_flag("naruko_eat", value=chars["Naruko_Uzumaki"].flag("naruko_eat")+1)
This should prolly return True is char is low on health/vitality... I am not sure, maybe we'll add another property to include those two into checks.I check this before giving an access to most interactions via interactions_check_for_bad_stuff and interactions_check_for_minor_bad_stuff labels.
In order for all village quests to work as intended we need two systems. SE, where you could unlock locations and find quest items, and BE, where you could set any battle you want. Those two parts have issues already.
There are more things I'd like to have for other packs.
First are unusable items that can only be possessed or sold, and not equipped or consumed. In fact, gems that I created some time ago which you should be able to find in SE and sell should be unusable (currently they are miscs that do nothing).
Second are special items. I mean items that have a label in json. You can use them (not equip on consume), and when you do it, we jump to that label from json.
Also, iirc you created logic for quest items that cannot be sold and, if I'm not mistaken, even transfered. I'm afraid I forgot how to create such items :)
Can you drop into chatroom for 15 mins?Too late, I wanted to get enough sleep before work at least once per week, and went to sleep at that time :)
I am not aware of any issues with battles other than adding moar stuff to the engine.I mean a function allowing to quickly run BE with arbitrary characters and mobs. Even without MC when needed.
It may be a better bet to work on a story, maybe with a couple of endings...I told you, I want to tie packs to story one by one.
I wanted to discuss showing items effects in the equipment screen as well. Gismo wants to show real applicable effects, that is prolly doable for direct stats (although even that may turn out to be a somewhat tricky calculation), but calculating effects of traits application/removal would be a freaking nightmare... We on the other hand discussed several options from not showing any bonuses at all but hinting to them in descriptions, show limited information about an item, show detailed information, something in between and etc...I'd prefer to show description with limited info, without concrete numbers (numbers are too tricky with no real benefit). Effects don't have descriptions though, we'll need to add it.
Too late, I wanted to get enough sleep before work at least once per week, and went to sleep at that time :)
I mean a function allowing to quickly run BE with arbitrary characters and mobs. Even without MC when needed.
Like be_run(party[char1:front_row, char2:back_row], enemy:[mob1:front_row, mob2:front_row, char3:back_row]) that will return true if player won.
I'm sure I won't be able to balance BE without such a function.
I'd prefer to show description with limited info, without concrete numbers (numbers are too tricky with no real benefit). Effects don't have descriptions though, we'll need to add it.
I told you, I want to tie packs to story one by one.
Also, I'm still waiting for npc class, so without it I pretty much have to use chars instead.
You missed my post after last discussion on this topic. After I've looked into this at your request, I couldn't find a good reason to have a function.Don't you always use MC's party vs mobs? I mean cases when you can have any party under command, not MC+his party.
Gismo wont be happy about it, he want to show the exact effects items cause to an actor. It's pretty hard to put together (if we want it to be done right), but I had some ideas yesterday.Oh, I don't mind. I just don't think that it's possible to do for all effects. They have a complex logic, and in the future there could be even more complex effects.
They do not require a special class... I just need to know how we're going to handle the images. It would be really great if we could use tags system for NPCs (for as many actors as possible actually) but it would mean a bit more work.We could. I don't even think I need to change something in the tagger, they can use the same tags.
Don't you always use MC's party vs mobs? I mean cases when you can have any party under command, not MC+his party.
Oh, I don't mind. I just don't think that it's possible to do for all effects. They have a complex logic, and in the future there could be even more complex effects.
We could. I don't even think I need to change something in the tagger, they can use the same tags.
It may be a better bet to work on a story, maybe with a couple of endings...I'm a bit hesitant to make global stories with endings after you mentioned politics system of some kind. I feel like major events should be tied to it. I will make my own story for the next release, yeah, but it probably won't be a core story.
for member in team:My code
member.controller = BE_AI(member)
$ enemy_team = Team(name="Enemy Team", max_size=1)
$ your_team = Team(name="Your Team", max_size=1)
$ enemy_team.add(t)
$ for member in enemy_team:
$ member.controller = BE_AI(member)
File "game/library/events/StoryI/Temari_part.rpy", line 64: Line is indented, but the preceding one-line python statement statement does not expect a block. Please check this line's indentation.::)
$ member.controller = BE_AI(member)
How does it work? Should I change the controller back after the fight to avoid issues when she will be hired and used in BE again?
init -9 python:
register_event("check_skill_yada_yada_yada_event", trigger_type="auto", locations=["all"], run_conditions=["hero.get_skill('sex') >= 200"], priority=101, dice=0, restore_priority=0, max_runs=1)
label check_skill_yada_yada_yada_event(event):
"Have some moar zex!"
$ hero.Sex += 200
return
register_event("intro_storyi_entervillage", quest="Medic's Request", trigger_type="auto", locations=["hiddenVillage_entrance"], dice=100, max_runs=1)Works as soon as you enter the village.
register_event("intro_storyi_entervillage", quest="Medic's Request", trigger_type="auto", locations=["forest_entrance"], dice=100, max_runs=1)Works only after you enter the forest the second time.
Wtf?
But there is no event when you enter the forest for the first time. At least I don't see anything.
Auto-Combat should set the controller every turn, even if it doesn't, it most definitely should. Tis been one f*cked day so I am not going to do anything tonight. Tomorrow I'll take a stab at jobs if I have any energy for focused coding, otherwise I'll know out a couple of items issues as those are easier to deal with.Lol, just as I thought. They keep fighting on their own even being on your side if you messed up with the controller before :D
Yeah, it's a bit confusing that you need to wait for a day before the next auto event will become available...
Lol, just as I thought. They keep fighting on their own even being on your side if you messed up with the controller before :D
Though I don't mind if all allies will fight automatically in the future while you only can give general directions. There are pretty good jrpg games with such a system.
But it will require a very good AI, of course.
I added graveyard. I won't be able to make it work on my own, ie show somehow dead chars.
def check_quest_not_finished(self, quest):Can it be rewritten to take any amount of quests names and return True as long as they all are not finished/completed?
"""
Will return False if quest is completed or failed, True otherwise.
"""
if self.is_complete(quest) or self.has_failed(quest):
return False
else:
return True
They will stay dead. I wanted to show names and portraits, unless you want to delete them from the game completely to free some memory.
I have a function that checks if a quest is completed or not.Can it be rewritten to take any amount of quests names and return True as long as they all are not finished/completed?
def check_quest_not_finished(self, *quests):
"""
Will return False if quest is completed or failed, True otherwise.
"""
for quest in quests:
if self.is_complete(quest) or self.has_failed(quest):
return False
return True
I wonder what is the best way to show big amounts of text in library. Our usual means are not an option.
I'm not sure how to deal with paragraphs. Strings usually cannot contain the sign of the transition to the next line. There are types of data that can, but I'm not sure that renpy supports them.
while True:which I don't quite understand.
result = ui.interact()
if result[0] == 'jump':
gm.start_gm(result[1])
if result[0] == 'control':
renpy.hide_screen("pyt_academy_town_entrance")
if result[1] == 'return':
break
while 1:
$ result = ui.interact()
if result[0] == "something":
if result[0] == "something":
if result[1] == "action_1":
# Execute some code
viewport:
mousewheel True
draggable True
scrollbars "vertical":
side "tr"
xpos 303
ypos 30
xysize (675, 670)
screen library_show_text(orly):I tried to add at right to scrollbar, it ignores it too.
$ strer = "A huge string."
add "content/gfx/frame/library_page.jpg" at truecenter
textbutton "Enough with it" action (Hide("library_show_text", transition=dissolve), Jump("library_read_matrix"))
viewport:
mousewheel True
draggable True
scrollbars "vertical" xpos 978
xpos 303
ypos 30
xysize (675, 670)
if orly == 1:
text "%s" %strer size 14 color black
I tried to add at right to scrollbar, it ignores it too.
$ strer = "A huge string."
frame:
background Solid("#FFFFFF")
xysize (600, 620)
xalign 0.5
has viewport:
xysize (580, 620)
scrollbars "vertical"
draggable True
mousewheel True
text "[strer]" size 14 color "#000000"
frame:
background Frame("path_to_image", 10, 10)
Weird is the need in two containers only because one cannot handle its own scrollbar without a clear reason, even though it's not mentioned in manuals. If you are concerned, report it as a bug.
I actually find stuff like side or xalign hard to understand so far, since delphi manipulates only coordinates and size of elements when you build a gui. And frame is not invisible, I don't need it on my background.
You can recode it as you like as long as functionality will remain.
I am not sure about texts, maybe styles could be used or RenPy could have { } options for it.Sadly, no. I found a PyTom post that you have to display text with different align separately. It's not worth it, I'll just use spaces when I need it in center.
Sadly, no. I found a PyTom post that you have to display text with different align separately. It's not worth it, I'll just use spaces when I need it in center.
I'll wait for replies to your post before changing something in gui.
You can make one book and I could write a really simple class that can build strings and align them appropriately in auto mode. I just need to see one book (any book) with all required formats.Well, pull and go to academy. There is only library for now, since I have no idea how else we could use academy without a huge amount of coding.
You can use older way with a side and YScrollBars like in the example in screen language. That will definitely workYou mean something like
side "c r":?
viewport id "lib_text":
xpos 306
ypos 30
xysize (675, 670)
mousewheel True
draggable True
text "%s" %string_to_show size 15 color black font "Fonts\EBGaramond-Regular.ttf"
vbar value YScrollValue("lib_text")
screen testing_vp():
add Solid("#FFFFFF", xsize=600) xalign 0.5
side "c r":
xsize 600
xalign 0.5
viewport id "lib_text":
xsize 600
draggable True
mousewheel True
text "Some Really Long String "*1000 size 14 color "#000000"
vbar value YScrollValue("lib_text")
label start:
call screen testing_vp
add "content/gfx/frame/library_page.jpg" at truecenterIf by "works" you mean usual "scrollbar at the freaking center", then it works for me too, I guess...
textbutton "Enough with it" action (Hide("library_show_text", transition=dissolve), Jump("library_read_matrix")):
xalign 1.0
yalign 1.0
side "c r":
viewport id "lib_text":
xpos 306
ypos 30
xysize (675, 670)
text "%s" %string_to_show size 15 color black font "Fonts\EBGaramond-Regular.ttf"
vbar value YScrollValue("lib_text")
Where is the code that decides what you can find while looking around? It's not unusual to have rare and expensive items, that's clearly an overkill.
I think it might use items with "exploration" location. But they are supposed to be well guarded by mobs, not just lie around in random city location.
Well, actually I was referring to your code where you check items_pool = list(item for item in items.values() if item.price <= amount). So I suppose it should be if "Look around" in item.location() or something?
It's been some time since I actually run the game to play and not to test something new :)
The game becomes unstable after you look at fonts, but I suppose it doesn't matter since there won't be such a thing in non-dev version.
My major concern is gui in some places.
- First of all, MC team is quite meh. We have a decent gui for team members at the fighters guild, we can just take it from there.
- Finance screen is a big no. That light blue thing should be replaced by pretty much anything.
- MC equipment screen should be build precisely in the same way as girls screens. You may keep sliding if you like it, but currently it's inconvenient as hell if you actually want to do something there, not just take a look at it.
- Filters at the girls screen look like a mess. There are so many of them, and there will be even more. We cannot keep them as they are.
battle = BE_Core(Image("content/gfx/bg/be/b_forest_1.png"), music="content/sfx/music/be/battle (14).ogg", start_sfx=dissolve, end_sfx=dissolve)
File "game/script.rpy", line 6, in scriptI suppose you rely too much on testing traits.
python:
File "game/script.rpy", line 70, in <module>
temp = [TestingJob(), WhoreJob(), StripJob(), ServiceJob()]
File "game/library/businesses&buildings/classes - jobs.rpy", line 1906, in __init__
self.occupation_traits = [traits["Service"]] # Corresponing traits...
KeyError: 'Service'
At very least something is wrong with random chars
Then I made a unique character with Mage occuption. Unique ones should have a higher priority than random ones. I went to tower and met 3 prostitutes.
Then I added Mage trait directly, and FINALLY I met that unique mage character (still zero random mages).
But wait, what if we change it like $ gm.enter_location(goodtraits=["Healer"], occupations=["Caster"])? It still should return all casters, including our unique mage.
Well, the answer is no, you will never meet her there.
... and occupation field doesn't work too.
It still should return all casters
===
We need to do something about the map, for some reason Gismo cut some of the locations all weird so now if you hover next to them (like beach and etc.) they keep loosing and gaining focus. Either they need to be recut or we need a matrix for them...
Do we even need occupation field in chars jsons now, when occupations are almost traits?
I recut them. Push with equipment screen, when finish it.
I recut them. Push with equipment screen, when finish it.
But wait, what if we change it like $ gm.enter_location(goodtraits=["Healer"], occupations=["Caster"])? It still should return all casters, including our unique mage.
No, something is wrong with the system.
The only way to meet a Mage is to give her Mage trait directly and check for $ gm.enter_location(goodtraits=["Mage"]). If you give her Mage class trait as occupation, not as a trait, you won't meet her. If you try to check for $ gm.enter_location(occupations=["Caster"]), you will never meet her too.
Do we even need occupation field in chars jsons now, when occupations are almost traits?
Just try it and see for yourself. I used my small Arcana_Heart pack for testing, there is only one character.
[
{
"id": "Lilica_Felchenerow",
"fullname": "Lilica Felchenerow",
"name": "Lilica",
"desc": "A half-demon, half-human. She loves playing pranks on people and has very little patience for things that don't interest her.",
"gender": "female",
"origin": "Arcana Heart",
"base_race": "Demon",
"personality": "Bokukko",
"breasts": "Average Boobs",
"race": "Half-demon",
"arena_willing": false,
"location": "city",
"status": "free",
"level": 5,
"height": "short",
"gold": 200,
"stats": {
"charisma": 15,
"constitution": 60,
"luck": 20,
"character": 60,
"intelligence": 20,
"attack": 35,
"magic": 20,
"defence": 40,
"agility": 60,
"mp": 10
},
"skills": {
"dancing": 10,
"exploration": 15
},
"btraits": [],
"ab_traits": [],
"basetraits": [
"Mage"
],
"elements": [
"Fire"
],
"traits": [
"Virgin",
"Lolita",
"Energetic",
"Not Human",
"Indifferent",
"Alien"
],
"battle_skills": [
"FistAttack"
],
"magic_skills": [
"Fire",
"Fira"
]
}
]
Yeah, I didn't updated jsons for some time, since there might be even more changes in their structure in the future. Actually, there must be changes, since we'll need a complete control over character location for quests, we have an issue for that.
===
Anyway... GM sorting code beware! I am coming for you! :D
1) badtraits are still really powerful and work only on preferred list. I am thinking that maybe it is a good idea to make bad-traits absolute and leave the location empty instead of just applying them to preference list?
2) I don't know if any of you remember it but we always check for "Curious" trait to place ALL characters with it on priority list, that can throw the system off a bit as well and was Dark's idea (I think). (aka: any girl with a Curious trait gets the same priority as any goodtrait/occupation).
I've fixed by adding curious_priority field, example in the mages tower.I don't see any changes in the tower json.
I think I've killed it ::)Did you tested it?
File "game/library/screens/pyt - screens - mainscreen.rpy", line 43, in script call
$ result = ui.interact()
File "renpy/common/00console.rpy", line 650, in script
python in _console:
File "renpy/common/00console.rpy", line 651, in <module>
console.interact()
File "renpy/common/00console.rpy", line 247, in interact
line = ui.interact()
File "game/library/screens/pyt - screens - mainscreen.rpy", line 72, in execute
screen pyt_mainscreen():
File "game/library/screens/pyt - screens - mainscreen.rpy", line 80, in execute
frame:
File "game/library/screens/pyt - screens - mainscreen.rpy", line 93, in execute
vbox:
File "game/library/screens/pyt - screens - mainscreen.rpy", line 98, in execute
textbutton "Girls":
File "game/library/screens/pyt - screens - mainscreen.rpy", line 98, in keywords
textbutton "Girls":
File "game/library/classes - gui logic.rpy", line 173, in __init__
self.sorted = list(girl for girl in hero.girls if girl.action != "Exploring")
File "game/library/classes - gui logic.rpy", line 173, in <genexpr>
self.sorted = list(girl for girl in hero.girls if girl.action != "Exploring")
AttributeError: 'str' object has no attribute 'action'
Yeap, I'd prefer to have an empty location for bad traits.
I don't see any changes in the tower json.
$ gm.enter_location(goodtraits=["Mage"], occupations=["Caster"], curious_priority=False)
Did you tested it?
I personally don't see any changes, still whores and strippers around the tower.
I tried to add a char for testing via console with hero.add_girl, but got
hero.add_girl("Hinata")
hero.add_girl(chars["Hinata"])
Do class traits work? Or should they at all?
For testing I changed char json, adding "basetraits": "Mage", and then added her to the hero. She is a prostitute.
Another try, I removed occupation and added Mage trait directly. She's a prostitute and doesn't even have a Mage trait at all. That's clearly broken.
There is another issue though that I noticed while testing. Race traits are not supposed to show names in gui, only icon. Some of them have long names, like Demonic Creature. And there is not enough space for such long names.
(atm I don't remember what this is about)I mean issue 59, with my comment at it.
I mean issue 59, with my comment at it.
For quest cases we probably need to control chars location freely, maybe instead of "city" it could be "Dark_Forest" to specify where exactly you can find her no matter the traits.
And there should be "None" location too if the character should be unavailable for GMs except quest cases.
char.show("0000-bs.png", resize=(300, 300))
So, it's possible to change character location in game freely, yes? Like, chars["Karin"].location = "Dark_Forest".
"hidden": true
pytfall.maps.unlock("mapname", "locname")
pytfall.maps.lock("mapname", "locname")
I cannot find the commit where you added it.
I just searched via notepad+ for "hidden": true and then for pytfall.maps.lock in all jsons and rpys.
Zero results for pytfall.maps.lock, and "hidden": true we have only for items.
{Nothing about hidden: true again.
"id": "hiddenvillage_entrance",
"name": "Hidden Village"
},
I thoughts you've hidden it as part of the design but there was a typo in code.
Yeah, and removing that capital letter also broke village screens and all events there, so I had to fix all that this morning :D
I thought it was intentional capital letter.
Thanks to git ability to see edits in any files, not just text ones, I was able to delete all third party tags from our sound/music files without replacing them.
While running game code:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 12, in script
$ result = ui.interact()
File "game/library/screens/pyt - screens - girlprofile.rpy", line 12, in <module>
$ result = ui.interact()
File "game/library/screens/pyt - screens - girlprofile.rpy", line 141, in execute
screen pyt_girl_profile():
File "game/library/screens/pyt - screens - girlprofile.rpy", line 155, in execute
if girls:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 213, in execute
frame:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 219, in execute
has vbox
File "game/library/screens/pyt - screens - girlprofile.rpy", line 339, in execute
vbox:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 344, in execute
if stats_display == "main":
File "game/library/screens/pyt - screens - girlprofile.rpy", line 379, in execute
fixed:
File "game/library/screens/pyt - screens - girlprofile.rpy", line 393, in execute
$ img = ProportionalScale(trait.icon, 100, 100)
File "game/library/screens/pyt - screens - girlprofile.rpy", line 393, in <module>
$ img = ProportionalScale(trait.icon, 100, 100)
AttributeError: 'unicode' object has no attribute 'icon'
Of course I tried it. Clarification: you need to click on portrait of any random character in the building.
I already have the link to your testing file in dropbox, so it's not the cause.
I tried to remove "race": "Human" from one of rchar jsons, and the game stopped crashing with that rchar.
"race": "Sylph",
"base_race": "Half-Elf",
"race": "Human",for rchar. She has Unknown race with these strings instead of Human, but no crashes.
"base_race": "Human",
My bad. I figured battle stats work like skills, ie with no limits.
If I'll use mod field, it could be easily overcame by training. That's not how it should work, boobs are still there, they should prevent characters from having the same agility as flat chars no matter how hard they train, unless there is a major gap in levels.
You know, it's very hard for me to imagine -100 mod since it works in percentages every 5 or 10 levels, I don't even remember. I'd rather have mod working by level, ie mod -10 means -10 per level.
File "game/library/items/pyt - screens - chars equipment.rpy", line 77, in script
python:
File "game/library/items/pyt - screens - chars equipment.rpy", line 83, in <module>
result = ui.interact()
File "game/library/items/pyt - screens - chars equipment.rpy", line 253, in execute
screen pyt_char_equip():
File "game/library/items/pyt - screens - chars equipment.rpy", line 449, in execute
vbox:
File "game/library/items/pyt - screens - chars equipment.rpy", line 451, in execute
fixed:
File "game/library/items/pyt - screens - chars equipment.rpy", line 454, in execute
vbox:
File "game/library/items/pyt - screens - chars equipment.rpy", line 474, in execute
frame:
File "game/library/items/pyt - screens - chars equipment.rpy", line 485, in execute
if dummy:
File "game/library/items/pyt - screens - chars equipment.rpy", line 487, in execute
vbox:
File "game/library/items/pyt - screens - chars equipment.rpy", line 492, in execute
viewport:
File "game/library/items/pyt - screens - chars equipment.rpy", line 494, in execute
has vbox
File "game/library/items/pyt - screens - chars equipment.rpy", line 496, in execute
python:
File "game/library/items/pyt - screens - chars equipment.rpy", line 498, in <module>
for effect in eqtarget.effects:
File "game/library/characters/classes - characters.rpy", line 1106, in __getattr__
raise AttributeError(msg % (key, self.__class__.__name__))
AttributeError: 'effects' is neither a gamestat nor an attribute of Player
You do know that currently clicking on any item in inventory at MC personal screen crashes the game, right?
This is because we apply all max fields immediately, unlike mod fields. If we'll have a field that will change max with every level (like our base traits do), there won't be need in huge max penalties or bonuses.
I'll create an issue for this.
Currently mod field works in a very strange way, applying 1/10 of it's value every 5 or 10 levels, iirc. This is very confusing without a reason, it's hard to imagine how it will work at a certain level.
<trait
id="Abnormally Large Boobs"
desc="Those things are like miniature moons..."
temp='0'>
<mod charisma = '20' />
<max charisma = '20' />
<min charisma = '20' />
<mod agility = '-20' />
<max agility = '-20' />
<mod strip = '-15' />
<max strip = '20' />
<blocks name = 'Big Boobs' />
<blocks name = 'Average Boobs' />
<blocks name = 'Small Boobs' />
</trait>
[code] "id": "Abnormally Large Boobs",
"desc": "One wonders how she keeps her balance. Those things are like miniature moons...",
"block_traits": ["Big Boobs", "Average Boobs", "Small Boobs"],
"mod": {"charisma": 30, "agility": -80},
"min": {"charisma": 10},
"max": {"charisma": 100, "agility": -80},
"mod_skills": {"strip": [-0.08, 0, 0.1], "dance": [-0.1, 0, -0.1]},
"breasts": true
},
[/code]The idea is that a lvl 100 character should get a full bonus from the trait, lvl 200 char gets 2x the bonus and etc. What is confusing?100 lvl is an abstraction, so to speak. We can't say how much time you will need to get it, or how high it will be compared to endgame levels.
which has absolutely insane effects for any none base trait, not mentioning that these kinds of traits could be plainly left without effects at all because ALB do not make characters more charismatic or less agile in a lot of the sources and yet this is one of the traits-types we FORCE upon all character.It makes them different from each other even without different occupations. +/-20 charisma is nothing at 50 lvl.
Most of your designs were really good in the @ release, but now you're dashing around huge values for items that cost 3 to 5k of Gold and simple traits. I don't know what has happened hereI'm not sure what do you mean by that. Prices were more or less the same all the time.
Ok, it should work with my next push, keep in mind that upkeep and disposition are still being applied once on traits application. Don't update traits until weDisposition doesn't work like that. When I tried to test Half-Sister trait a few months ago, it game me an error. I looked at the code and found out that you disabled it in traits because it messes up with GMs somehow. So I had to change the trait, giving it effect that increases disposition changes and works together with other similar effects instead of simple disposition bonus.
100 lvl is an abstraction, so to speak. We can't say how much time you will need to get it, or how high it will be compared to endgame levels.
It makes them different from each other even without different occupations. +/-20 charisma is nothing at 50 lvl.
I'm not sure what do you mean by that. Prices were more or less the same all the time.
Disposition doesn't work like that. When I tried to test Half-Sister trait a few months ago, it game me an error. I looked at the code and found out that you disabled it in traits because it messes up with GMs somehow. So I had to change the trait, giving it effect that increases disposition changes and works together with other similar effects instead of simple disposition bonus.
#We prevent disposition from being changed by the traits or it will mess with girl_meets:::)
Odd... Well, this needs to be reviewed, it doesn't feel right.It's a simple progression. If a short sword that gives + 20 max attack costs 150G, then Angelic Blade which gives + 150 max attack should be about 8000G.
Yes, it is. It's a minor trait, a combination of +20 to max and +20 to stat is very considerable for it. Otherwise all the hours I've put into making the system sound is f*cked by traits.If we talking about minor traits in general, it's true. If we talking about boobs traits in h-game, they are not minor.
As I've said, it was rigged to reach the bonus value specified in json at level 100, it's not an obstruction, it's a poor workaround.You asked me how it's confusing. It's confusing when you try to figure out values that are supposed to be at lvl 100. You never tried to balance or create traits, so you don't know about it.
classes - characters.rpy: ::)
# We prevent disposition from being changed by the traits or it will mess with girl_meets:
if key == "disposition":
stats.disposition += trait.mod_stats[key][0]
It's a simple progression. If a short sword that gives + 20 max attack costs 150G, then Angelic Blade which gives + 150 max attack should be about 8000G.
However, it costs 2500, so there is a huge discount already.
If we talking about minor traits in general, it's true. If we talking about boobs traits in h-game, they are not minor.
If we'll have, let's say, +2 to max charisma and -2 to max agility every 10 levels for ALBoobs, it won't break anything but will be different from -2 max charisma +2 max agility for small ones.
You asked me how it's confusing. It's confusing when you try to figure out values that are supposed to be at lvl 100. You never tried to balance or create traits, so you don't know about it.
I hate it in items... feels like a very high quality sword should be 10 - 20x more expensive. Really HighQ sword 50x more expensive or something like that. We have items that ravage stats and don't cost much at all. Maybe I just lost track of Gold value in the game...You should give me actual examples, I cannot justify the cost of an abstract item.
+/-20 at level 100 is EXACTLY what you should have gottenThere will be more levels after 100.
Set a girl to a level of 100 to find out, assume that she'll a bit more max and relevant stats closer to max due to work/training.That's additional work for me :D
You should give me actual examples, I cannot justify the cost of an abstract item.
If you want to, you could calculate prices for items automatically based on their characteristics and rarity.
There will be more levels after 100.
And it will hurt low level characters a lot in the very beginning, just like you feared. Less than -80, but still.
But if it will be applied gradually, it won't hurt them so much.
That's additional work for me :D
With mod fields working as I described I don't need that because everything will be clear as it is.
Really? So you will be able to tell how a combination of 1 or 2 basetraits with leveling up and with the combination of x amount of normal traits and with the possible items (which they will often auto-buy + auto-equip), training, events and game progression will effect the character at x level? :oYup. Since I don't have to use 100 level, I could use 10-20 levels instead, and these calculations are more simple. All our bonuses fit into first 10-20 levels, we don't have stuff that begins to work at lvl 100 or something. At least yet.
Just adding to a stat ever so often on level-up is already HUGE advantage, normal level addons and items advantages and the basetraits should be more than enough to provide good max range for those increases and even leave room for training.I don't see the difference between +20 max in the beginning and +1 max per level for first 20 levels for example. We already allow all traits to increase max values. How making it gradual could make things worse? It's the same thing in the end, but better balanced for low levels. If it could break the game, usual max fields could do it as well, and we should get rid of them.
That reminds me, can I use the chance less than 1? In many games really powerful items have really low chances of dropping.
I don't see the difference between +20 max in the beginning and +1 max per level for first 20 levels for example. We already allow all traits to increase max values. How making it gradual could make things worse? It's the same thing in the end, but better balanced for low levels. If it could break the game, usual max fields could do it as well, and we should get rid of them.
Nah, I'm tired of this dispute. I'll do it like you proposed.
So what about disposition changing via traits? Currently it successfully crashes the game.
I vaguely recall how you mentioned something about possible issues with events if we'll use disposition on traits, because if an event requires 100 disposition and trait gives + 200, there is a high chance that it will never be triggered, or at least will be triggered not when you expected it to.
About gifts and their issue, currently they are way too effective, assuming that you know correct gifts. I propose to get rid of all disposition values and dismod field, and use hardcoded bonuses and penalties to disposition.
And use fields like goodtrait, badtrait, goodoccupation, badoccupation.
Other fields like cbloack will remain.
If there are more good traits than bad ones, it will be a perfect gift, and a bad one otherwise. If they are equal or close to it, it will be an ok gift.
Equal? Wouldn't that be rare with so many traits in the game? It doesn't sound as good as our current system.I'm not sure either way how to decide if a gift will be good or bad. I suppose we could make it bad if there are no good traits, but there also should be a difference between good and perfect ones.
We have 3 outcomes in terms of dialogue lines. I'm not sure it the game uses them right now, but it supposed to.
elif result[0] == "gift":
python:
# Show menu:
if result[1] is True:
gm.show_menu = False
gm.show_menu_givegift = True
# Hide menu:
elif result[1] is None:
gm.show_menu = True
gm.show_menu_givegift = False
# Give gift:
else:
item = result[1]
dismod = 0
if hasattr(item, "traits"):
for t in item.traits:
if traits[t] in char.traits:
dismod += item.traits[t]
if hasattr(item, "occupations"):
for occ in item.occupations:
if char.occupations.intersection([occ]):
dismod += item.occupations[occ]
if not dismod:
dismod = item.dismod
hero.inventory.remove(item)
char.disposition += dismod
setattr(gm, "show_menu", True)
setattr(gm, "show_menu_givegift", False)
if dismod < 0:
gm.jump("badgift")
elif dismod < 50:
gm.jump("goodgift")
else:
gm.jump("perfectgift")
Alright, so how the new mod field should look in jsons? You never gave me an example.
What are you gonna do with the old mod field?
And what should we do with classes traits? There are init_mod fields, do they work like mod, I mean gradually?
Should I use the new mod field for classes?
- I need to know lvl_max for all stats at lvl 1. Including health and mp. We don't have it in gui, and I have no idea where to look in the code.
stats = {
'charisma': [0, 0, 100, 60],
'libido': [0, 0, 100, 100],
'constitution': [0, 0, 60, 40],
'joy': [0, 0, 100, 200],
'character': [0, 0, 100, 60],
'reputation': [0, 0, 100, 100],
'health': [100, 0, 100, 200],
'fame': [0, 0, 100, 60],
'mood': [0, 0, 1000, 1000],
'disposition': [0, -1000, 1000, 1000],
'vitality': [300, 0, 300, 500],
'intelligence': [0, 0, 100, 60],
'luck': [0, -50, 50, 50],
'attack': [0, 0, 60, 40],
'magic': [0, 0, 40, 30],
'defence': [0, 0, 50, 40],
'agility': [0, 0, 35, 25],
'mp': [0, 0, 40, 30]
}
- Are you sure it's a good idea to not increase at all mp with level up unless there is a mage class?
- Luck is still from -50 to 50?
- Vitality max can be changed by traits without issues in the game, right? I hope so, at least. Some of traits do it, assuming that it will make character more or less enduring.
"mod_stats": {"charisma": [-4, 2], "agility": [2, 2]},I got
File "game/script.rpy", line 98, in script
python:
File "game/script.rpy", line 104, in <module>
chars = load_characters("chars", Char)
File "game/library/functions - loading data.rpy", line 128, in load_characters
char.apply_trait(traits[trait])
File "game/library/characters/classes - characters.rpy", line 1904, in apply_trait
self.traits.apply(trait, truetrait=truetrait)
File "game/library/characters/classes - characters.rpy", line 218, in apply
char.stats.apply_traits_mod_on_levelup()
File "game/library/characters/classes - characters.rpy", line 916, in apply_traits_mod_on_levelup
if not self.level%trait.mod[key][1]:
KeyError: u'charisma'
And may I ask about the plans for SE? I'm a bit confused with the new screen that removed the access to the old content.Yes, we have an awesome gui and concept made by Gismo, but currently it lacks actual logic behind it :D
Yes, we have an awesome gui and concept made by Gismo, but currently it lacks actual logic behind it :DGreat, I'm definitely interested in making some content for that. Especially if we allow the scripted mini-events to happen and be displayed in text report.
When Xela will finish jobs and stuff, he will code new logic for new SE.
The moment I tried to use a line likeI got
Then I added to char json "charisma": 50, nothing more.
For charisma:
Lvl 1: 30/60 - correct
Lvl 2: 49/65 - ???
Lvl 3: 40/70 - in theory it should be 70/2 + 2 from boobs trait = 37... But let's say it was a bit randomized or something.
Lvl 4: 64/75 - ???
Even levels always look especially weird for some reason. Odd levels are more or less ok, though their logic is a bit vague. But even ones break progression on spot.
I read something about a new demo? Got the o.45 alpha version myself, haven´t seen anything more recent around.
Lvl2: 5/0 <- WRONG
It skipped level 2. I believe it doesn't work as intended in the case when there is no stat field in json.
{
"id": "Big Boobs",
"desc": "This girl really has knockers.",
"block_traits": ["Abnormally Large Boobs", "Average Boobs", "Small Boobs"],
"min": {"charisma": 5},
The only thing I don't understand is leveling system when you set level in json. It gives crazy stats to characters, and not even randomized, just crazy and illogical. Everything else is pretty clear.
Let's see...
I've attached a json I used for testing. It's not exactly written by the rules
I don't understand nevertheless how min charisma 5 that you mentioned prevents the game in the first test from giving +2 to charisma at level 2 as intended, making it 7. By level 4 it should be 9 already, instead it's only 7 for some reason. But once I add "charisma":0 to json, it suddenly works as it should. I suppose you misunderstood me.
In fact, stats fields in json are a very powerful thing, and should be used only when necessarily. So if the game begins to work weird without them, it's a bug.
It is not crazy or illogical, it is a normalization routine. If you do some crazy sh1t like:Stats are completely different for even and odd levels, as I demonstrated before. It's like there are different algorithms for odd and even levels. Charisma at lvl2 is much higher than at lvl3.
What happens here is a trait that does not change a charisma directly on application application sets a minimum. That results in primary layer of stats ending up below the minimum layer.Are you telling me it's possible to have min charisma 5, while actual charisma is less then 5, thus when you try to increase it, it doesn't change? ???
They are percentages of the maximum possible. Levels ups should work in the same way. We used to have low random values for stats that are not provided in JSONS but you didn't like that, so it was removed.I know all that. I'm not sure why are you telling me that. As I mentioned, with "charima:0" everything works as intended, without charisma field new mod field doesn't give stat at lvl 2. Even if there is a normalization of any kind, it still should not prevent traits logic from working as intended.
Stats are completely different for even and odd levels, as I demonstrated before. It's like there are different algorithms for odd and even levels. Charisma at lvl2 is much higher than at lvl3.
Are you telling me it's possible to have min charisma 5, while actual charisma is less then 5, thus when you try to increase it, it doesn't change? ???
That's not how should work in any case, current charisma should always be >= min charisma.
I know all that. I'm not sure why are you telling me that. As I mentioned, with "charima:0" everything works as intended, without charisma field new mod field doesn't give stat at lvl 2. Even if there is a normalization of any kind, it still should not prevent traits logic from working as intended.
This can actually modify the amounts by which stats increase of levelups. Be VERY careful with this, at the time that I write this, every level-up increases max by 2 and lvl_max by 5.But every time I level up character in the game, her charisma, constitution, etc. max levels in gui increase by 5. So you show in gui lvl_max instead of max? Because according to you max should be changed by 2, not 5. Are you sure it's done on purpose? It means you cannot see max, only lvl_max.
...
But not leveling function when you set level in json. With "charisma":0 and big boobs aka min charisma 5 you still will have 5 charisma at lvl2 and 7 charisma at lvl 4. The same problem as normal leveling used to have before your last push.
classes - jobs.tpy:You have plans to do something major with existing jobs past 1.0?
The class that solves whoring jobs.
@ Abandoned until 1.0 due to complexity of adding new content.
You have plans to do something major with existing jobs past 1.0?
Also, I searched in all jobs rpys for "charisma" and haven't found a single match. You don't use it for whore jobs? Or they are not ready for that yet?
identical parties using the same characters (not mobs)
So it does the same as closing and running again the game?
If I have to guess, it has something to do with screen size or resolution. Do you know of any limitations there?
rand_mobs = ["Goblin", "Giraffe", "Slimeball"]
enemy_team = Team(name="Enemy Team")
for i in range(randint(1, 2)):
mob = build_mob(id=choice(rand_mobs), level=randint(50, 55))
mob.controller = BE_AI(mob)
enemy_team.add(mob)
initSurprisingly, the game did not resized his portrait to fit into the portrait window (it's too big for the window), so I had to use show_side_image=ProportionalScale("content/npc/mobs/ct1.png", 120, 120) instead.
$ enemy_soldier = Character("Guard", color=white, what_color=white, show_two_window=True, show_side_image="content/npc/mobs/ct1.png")
...
enemy_soldier "Who the hell are you?!"
I wanted to quickly use a mob portrait in dialogue without making an npc, and wrote it likeSurprisingly, the game did not resized his portrait to fit into the portrait window (it's too big for the window), so I had to use show_side_image=ProportionalScale("content/npc/mobs/ct1.png", 120, 120) instead.
Is it a normal behavior? Shouldn't the game resize them by itself?
if side_image:
# We supply this here since it's always the same value for all characters. This can easiely be moved to the declararion of classes.
# add ProportionalScale(side_image, 120, 120) xalign 0.138 yalign 0.968 #1.0
add side_image xalign 0.138 yalign 0.968
else:
add SideImage() xalign 0.0 yalign 1.0
def storyi_randomfight():I get
enemy_team = Team(name="Enemy Team", max_size=3)
your_team = Team(name="Your Team", max_size=3)
rand_mobs = ["Infantryman", "Archer", "Soldier"]
for i in range(randint(1, 3)):
mob = build_mob(id=choice(rand_mobs), level=randint(1, 2))
mob.controller = BE_AI(mob)
enemy_team.add(mob)
your_team.add(k)
for member in your_team:
member.controller = BE_AI(member)
# your_team.add(hero)
battle = BE_Core(Image("content/gfx/bg/be/dungeon.jpg"), music="content/sfx/music/be/battle (14).ogg", start_sfx=get_random_image_dissolve(1.5), end_sfx=dissolve)
battle.teams.append(your_team)
battle.teams.append(enemy_team)
battle.start_battle()
your_team.reset_controller()
if battle.winner != your_team:
renpy.jump("game_over")
File "game/library/events/StoryI/prison_break.rpy", line 57, in scriptI know it works via calling a label, but I'd prefer to do it via function.
$ storyi_randomfight()
File "game/library/events/StoryI/prison_break.rpy", line 57, in <module>
$ storyi_randomfight()
File "game/library/events/StoryI/prison_break.rpy", line 22, in storyi_randomfight
battle.start_battle()
File "game/library/be/core.rpy", line 122, in start_battle
self.main_loop()
File "game/library/be/core.rpy", line 71, in main_loop
ev.controller()
File "game/library/be/core.rpy", line 777, in __call__
skills = self.get_skills()
File "game/library/be/core.rpy", line 807, in get_skills
t = skill.get_targets(source=self.source)
File "game/library/be/core.rpy", line 417, in get_targets
l = battle.get_fighters()
NameError: global name 'battle' is not defined
When I try to run functionI getI know it works via calling a label, but I'd prefer to do it via function.
def storyi_randomfight():
enemy_team = Team(name="Enemy Team", max_size=3)
your_team = Team(name="Your Team", max_size=3)
rand_mobs = ["Infantryman", "Archer", "Soldier"]
for i in range(randint(1, 3)):
mob = build_mob(id=choice(rand_mobs), level=randint(1, 2))
mob.controller = BE_AI(mob)
enemy_team.add(mob)
your_team.add(k)
for member in your_team:
member.controller = BE_AI(member)
# your_team.add(hero)
# Use this instead:
store.battle = BE_Core(Image("content/gfx/bg/be/dungeon.jpg"), music="content/sfx/music/be/battle (14).ogg", start_sfx=get_random_image_dissolve(1.5), end_sfx=dissolve)
battle = store.battle
battle.teams.append(your_team)
battle.teams.append(enemy_team)
battle.start_battle()
your_team.reset_controller()
if battle.winner != your_team:
renpy.jump("game_over")
global battle
I slept poorly last night, so I cannot afford to use chat today, it always ends up with staying up late :D
I just need to clarify for tomorrow how to call a specific image from issue #77. You mentioned it like char.show(image name, size), but stuff like chars["character id"].show(...) doesn't work no matter what.
char.show("0000-bs.png", resize=(120, 120))
chars["Hinata"].show("0000-bs.png", resize=(120, 120))
I slept poorly last night,
I am working on restoring Xenoa. I moved her interraction under a label ("find_xenoa") and removed the global flag it was using.
It works and I could push it now, but I want to know if it is alright with you to have a new label, I don't know if it can cause issues in other parts of the code.
Also, how do you add a girl to your team? I want to make a girl train with Xenoa. In the alpha there used to be a bug/exploit there, I want to see if I can fix it if it hasn't already.
1) Her name should be Xeona.
2) I am not sure what you mean by "moved interaction".
edit: I corrected my label and it broke my save. When I use a saved game which has spoken to Xeona while her interaction was Under the faulty label then speaking to her again makes an error: cannot find label "find_xenoa".
$ h = chars["Hinata"] # <== Single Ren'Py Script Statement.
"[h.fullname]" # <== Single Ren'Py Script Statement.
show expression h.show("profile", resize=(500, 500)) # <== Single Ren'Py Script Statement.
h.say "My name is Hinata" # <== Single Ren'Py Script Statement.
python:
# 10 000 000 lines of code... # <== STILL A Single Ren'Py Script Statement (meaning that only the previous statement will be saved until python block is finished).
Is that what you were warning me about when you said renaming labels caused problems?
In my experience, saves are not a perfectly reliable way to test changes in the code, they don't take into account many things. Usually it's better to start a new game and, if needed, run the label you want to test from the console.
Also, when you change the code a lot, sometimes you have to force recompile the game, there is an option for that in renpy launcher.
$ new_random_girl = build_rc("Angel")I get an error.
new_random_girl "..."
Ren'Py saves the last finished Ren'Py Script statement, label name where the said statement resides is a part of that save.
I don't think this is the problem I had. I had returned to the arena_outside label and to the main menu after saving, plenty of labels had passed. I could use the saved game normally, it only crashed when I tried to speak to Xeona, as if it had memorized that her button was leading to the label that was changed.
I'd like to create and use in dialogues a random character. Assuming that this is possible at this point. I can create and add one to the hero, but when I try to use her in dialogues likeI get an error.
$ nr = new_random_girl.say
nr "..."
python:
def start_special_battle_scenario():
# bla bla bla
$ ssbc = start_special_battle_scenario
$ ssbc()
label some_label:
# loads of code:
label another_label:
Someone should nuke that python academy thing, it seems useless...All their tasks are about inputting some variables, do some basic math and logic with them and then outputting them using complex strings with %. They also explain how to create classes and functions and use them in the same manner.
I've seen some of your new scripts btw, you're still using:But I don't share irrational hatred of python developers for freely jumping to labels when needed.Code: [Select]label some_label:
# loads of code:
label another_label:
Please don't and fix the existing script. It will be a nightmare for me to fix otherwise. All labels should be on the base indent.
But I don't share irrational hatred of python developers for freely jumping to labels when needed.(http://imgs.xkcd.com/comics/goto.png)
What tool are you using to code? I am using a text editor but I would really like to have a program with helpful features like autocomplete and search trough all files.I use notepad++. It can do anything, providing that you know how to use it.
Why do we def adjust_exp twice? In classes - characters and functions - characters.
label intro_story_konan_room:
stop music
stop world
$ k = chars["Konan"]
$ k_spr = chars["Konan"].get_vnsprite()
$ konan_orig = 0
$ konan_ling = 0
$ konan_protector = 0
$ a = 0
$ b = 0
$ c = 0
$ d = 0
$ e = 0
$ f = 0
$ sc = 0
hide screen pyt_city_screen
play world "Dungeon2.ogg" fadein 2.0 loop
scene bg story dark_room with dissolve
"This is the place where lived the kunoichi, a small room in a dirty, old hotel. You should examine it, maybe there are some clues left."
label konan_room_search:
call screen poly_matrix("library/events/StoryI/coordinates.json", show_exit_button=(1.0, 1.0))
label intro_story_konan_room:
stop music
stop world
hide screen pyt_city_screen
$ k = chars["Konan"]
$ k_spr = chars["Konan"].get_vnsprite()
$ konan_orig = konan_ling = konan_protector = a = b = c = d = e = f = sc = 0
play world "Dungeon2.ogg" fadein 2.0 loop
scene bg story dark_room with dissolve
"This is the place where lived the kunoichi, a small room in a dirty, old hotel. You should examine it, maybe there are some clues left."
label konan_room_search:
call screen poly_matrix("library/events/StoryI/coordinates.json", show_exit_button=(1.0, 1.0))
I am not asking you to rewrite your code, just make sure that all label declarations are on the base indent, this has nothing to do with coding practices, just code readability.For complex things it's the same thing as rewriting them :D
Btw in your example you looking at my first attempt to use matrix. It's not a good idea, this script is for trying matrix out, it won't be used in the game, since I have a much better idea how to use both matrix and Konan (prison_break.rpy).
In sex scene for example I created at first a label for normal sex options that includes all checks and scenes. Then, much later, added hire fox sex option that uses the same scenes but not the same checks. Thus I jump past normal checks directly to the scenes.
In order to avoid it I'll need to separate all interactions and scenes completely.
GM - sex.rpy
label l1:
# code
label l2:
# code
label l1:
# code
label l2:
# code
(codes) are the exact same thing.
label_loop:
newVar = 0
while newVar < 7
label_action:
# complex action
newVar++
def function (self, param)
# code
# later
object.action = function
object.action(value)
•Review the code2: What do you mean, auto-methods? methods for auto-equip?
•Update auto-methods
•Update the way traits are applied (should not be per "gender", not just for instances of Girl class)
•Generalize more functions (transfer/auto and etc.)
Code: [Select]label_loop:
newVar = 0
while newVar < 7
label_action:
# complex action
newVar++
In this code, when I jump to label_action:
- will I reach newVar++?
- if I use newVar im my complex action, will I get en error?
- - If not, what would be its value?
Of course this code is bad, it would be better to make a function for the complex action and pass newVar as a parameter if needed. I just want to know how this would be handled.
python:
for i in xrange(7):
# complex action
Can I pass functions as variables? Example:Code: [Select]def function (self, param)
# code
# later
object.action = function
object.action(value)
I am starting to look into the items code for Issue #95.2: What do you mean, auto-methods? methods for auto-equip?
3: If I understand correctly, Traits from items are applied to Girls only and you want to extend that to all characters, right?
4: What do you mean, generalize? Make the function handle correctly more items?
a part of show function somehow...
Profile pics without mood might be unavailable in the game, since the game already looks for mood tags based on character joy.Wouldn't that mean that all other expressions like confident, shy, suggestive etc. are out too?
Ideally, it should try to return as many correct tags as possible, starting from first tags. Ie if there is no a picture with (tag1, tag2, tag3, tag4), it should try to return (tag1, tag2, tag3), then (tag1, tag2), then (tag1).
- normal = normal search behavior, try all tags first, then first tag + one of each tags taken from the end of taglistIt doesn't look like I described.
- any = will try to find an image with any of the tags chosen at random
- first_default = will use first tag as a default instead of a profile and only than switch to profile
Let's talk about tags substitution again. Today I'm working on that huge sex scene script (which is very simple to review :D ), and once again look at huge checks that I had to come up with to make sure we show the best possible picture. How should it really work:
Partner_hidden logic:
1) If we use partner_hidden, it should have greater priority than location. Ie if we don't have partner_hidden+wildness, and we don't have that combination, we should try to show partner_hidden+simple_bg OR partner_hidden+no_bg.
2) If there are NO partner_hidden pictures with proper action and simple/no bg, then we try to show after_sex instead with proper location, or simple bg/no bg if there is no a proper location picture.
3) If we don't have even them, we have no choice but ignore partner_hidden tag, and show best possible pictures without it.
Location and actions logic:
1) If we don't have needed location, we should try to show simple_bg OR no_bg with needed actions.
2) For actions that don't have a picture (usually foot and handjob, but there could be more for rare chars) we show after_sex with needed location instead.
3) If there are no perfect location pictures, or even simple_bg/no_bg pictures, we should try to show after_sex with needed location, and if we don't have them, after_sex + no_bg/simple_bg.
5) Finally, if we don't have even pictures from 3), we show closest possible location, ie if we have indoors+living room+anal, let's try to show indoors+anal at very least.
This is complex as hell, but it should provide the best possible sex picture. Currently function that does it is far from showing the best possible one.
(usually foot and handjob, but there could be more for rare chars)
5) Finally, if we don't have even pictures from 3), we show closest possible location, ie if we have indoors+living room+anal, let's try to show indoors+anal at very least.
Soooo, umm.. Im a bit confused, what's the latest version? The alpha from the alpha thread, the git version or what?
3)It's nothing too complex, all it's based on tagged structure:
This I couldn't understand properly, I'll need some lists from you:
4) I assume that for actions I will be able to use whatever you put in sex_actions_list, if not, I'll need another list of all actions that can be used here.Yup, ideally it should work for any sex actions. I don't try to set a perfect match for poses or actions.
I'd like to change stats (and set prices for hiring) during sex scene in the same manner as you do for whore jobs. There are so many jobs rpys, where should I look for this stuff?
Do you have any specific route of thoughts for issue 121, or any ideas are good? :)
BTW: What you did in the image searching func changing shwo to set_img most definetly messes it up.Well, I didn't noticed anything weird during testing. Char.show should do pretty much the same thing as gm.set_img, but also requires image size, which is useless in our case, since we use the function in gms, and they use one size all the time.
Char.show should do pretty much the same thing as gm.set_img
Do you have a stable version other than the alpha who is way too old for the gui ?.. i already half modded Jack o nine tails into mine but would like something that works as good as the alpha but more recent lol.The current dev version is stable enough to not crush, I suppose :)
ST skill/attributes/traits ( they have nothing to do with the ones in the main game )I don't understand this part. I understand special traits like scars or nympho. But I don't get what do you mean by different skills/attributes.
Sketches for the screen Victory and Defeat after the fight.They already look awesome :)
To be fair atm game is just not fun to play .As starter u just buy cheapest brothel employ 2 girls and wait to go broke with cash :D
i hope it would be more balance in future beacouse girls upkeep is just to high or income to low anyway good try
After all, we should be able to transform slaves to free characters and vice versa when needed. So their systems should be more or less compatible, or at least have some algorithm to transform slave attributes to free chars attributes and vice versa.
Even with alpha and the taxes on its easy if you know how to do it.. as for upkeep.. remember your girl ask to be paid 1 time per day while she earns up to 3 times her work price at 35 constitution ( 3 AP ) and rank her up as soon as you can so she will earn even more / AP.. but the tax on slave thats a bit too mutch since their upkeep is like the free girl wages..
to reduce upkeep lower refinement to 0 using items.. but when your girl is ready to rank up as prostitute add the required refinement using items.. also its a good idea to max charisma with items if you can..
How does the check on equipped items works ?? do you check item slots or there is a list of equipped items ? in 0.45I'm not sure it's possible to do directly atm. You can ask Xela to code it, it's not difficult.
Like I said to much complication on start of game...not fun to play at all for me but game got potential in futureI'm surprised there were people who actually enjoyed it, considering how many systems were unfinished back then :)
[i for i in char.eqslots.values() if i]
if item in char.eqslots.values()
Like I said to much complication on start of game...not fun to play at all for me but game got potential in future
Alright but since most of the code is done can i make it a mod for 0.45 alpha ?
I hate JoNT/SM systems for PyTFall and in general. Anything where a character gradually builds up obedience is prolly not a very good idea. We've discussed this a couple of times already since your thread and decided not to go with it.I'm not sure yet how to build an interesting, original (taking JoNT system is obviously not original) and not oversimplified ST system. I have some ideas about training options, but not about system logic :)
You also cannot use original stats/skills/traits from JoNT in PyTFall, our own system is complex as hell and cannot be converted to it/from it.On the other hand, slaves inside ST definitely can use minor stats like hunger or cleanliness which just disappear when you free them, since they can take care of themselves outside of ST.
ATM i dont have a lot of time and since nothing moved on ST i made this.. that way it will make me want to invest some time on rendered pack..No matter the system, the more ideas, ie content we have for training/rules/punishments/etc, the better, since we can adapt them to any system. You found a really cool background too btw.
You also cannot use original stats/skills/traits from JoNT in PyTFall, our own system is complex as hell and cannot be converted to it/from it.
You can code something like an offshoot game or something like that but PyTFalls ST will be a lot different, there will be no "obedience" training in ST/JoNT sense, a simple phase of talking to a char/trying to break if talking fails by imprisonment, deprivation and/or threats will take place. If that succeeds, char can be trained similar to how schools work with options to provide personal training. Options of jobs/sex/kinky stuff will be unlocked, usually in bulk on conversing/punishment. There will most definitely not be a system where you unlock chars actions little by little.
And true there is obedience.. but is impaired by a lo of stuff so you will have to manage those thing.. even a max obedience she could refuse you if you did not manage the other things as well.. and obedience can drop too..Again, we can assume that once the slave was trained and removed from ST module, she was trained properly and will not refuse any reasonable request (not any request at all, that would require mind control or something). Thus once training is successfully finished, we assume that her obedience is max and always will be max, and simply remove it from her stats.
Dark.. maybe you got a link to a website where i could find what each unique girl traits or basic stats/skills are?We have this (http://www.pinkpetal.org/index.php?topic=3504.0) old thread that has some info, but it's quite outdated.
SKILLS = set(["vaginal", "anal", "oral", "sex", "strip", "service", "refinement", "group", "bdsm", "dancing",
"bartending", "cleaning", "waiting", "management", "exploration", "teaching"])
does the stats in Pytfall individually increase by a fixed amount each lvl or not ?I'm afraid it's a very complex matter. We changed traits logic in the dev version. Now you can write there something like "mod_stats": {"charisma": [1, 4]}, and the girl will have +1 to charisma every 4 levels. Thus depending on traits characters may or may not have bonuses per level.
I'm afraid it's a very complex matter. We changed traits logic in the dev version. Now you can write there something like "mod_stats": {"charisma": [1, 4]}, and the girl will have +1 to charisma every 4 levels. Thus depending on traits characters may or may not have bonuses per level.
At the same time by fixed amount we raise max levels of stats. +2 to max and +5 to absolute max per level. Absolute max is the max that cannot be exceeded no matter what. Normal max can be increased via items and training, until it will hit absolute max.
The system is complex, that's why it's so difficult to convert stats.
I'm not sure yet how to build an interesting, original (taking JoNT system is obviously not original) and not oversimplified ST system. I have some ideas about training options, but not about system logic :)
In this system unlike SM where your progress is.. ( linear ?? ) but like JoNT you dont have to unlock little by little.. you can force em to do it now but you will get penalty.. like fear/against increase.. or endurance/moral drop unless they got masochist trait or other relater stuff like those.. that will reduce penalty
And true there is obedience.. but is impaired by a lo of stuff so you will have to manage those thing.. even a max obedience she could refuse you if you did not manage the other things as well.. and obedience can drop too..
She could end completly in a broken state at some point.. but unlike JoNT i wont butcher/kill her.. ill just add some potion that you will need to make with alchemy to reset her to her original stats or just remove the broken state..
My ultimate goal would be to make a Pytfall JoNT AA2 Love Girl combo in UE4.. all i need is logic and ST concepts as i can make the rest...
But first step ( and less time consuming will be making packs out of 3D rendered girls and 3D rendered BG i could use in UE4 while a develop a ST user mod system and get content for my mod or Pytfall in general)
Xela does the stats in Pytfall individually increase by a fixed amount each lvl or not ?
if so it will be easy to convert from Pytfall to my mod.. like lvl1 Boa:
17/60 charisma.. 2/5 Beauty
60/60 character.. could give 5/5 temper and 5/5 nature and 5/5 pride but her traits/arch type could reduce some of those numbers..
16/40 constitution.. 2/5 endurance..
6/60 intel.. 1/5 intel..
2/35 refinement.. 1/5 sensitivity..
dispo amount / something to give base obedience..
and so on..
i would just have to find a formula that compare the current skill with max skill and round them up or down for a 0-5 basis.. and that would work at and character lvl..
and it will only work 1 way.. Pytfall (unique/random)girls -> ST module.. every time they enter the dungeon.. that way the girl you send in will be the girl you worked on in Pytfall and not some predefined ( crap ) lol
I dont know if you had plans to sell slaves you trained to npcs or even slave markets but this could be 1 result of my ST mod.. and earn $$ in real game
Second ( on my mod ) would be to make her gain traits for the main Ptyfall after she met the requirement in ST module
OK but does the stats showing in girl profile have all those modifier on.. like she had 30 con lvl stat + 5 con from item to cap at 35 max lvl stat ( does girl profile will show 35 ? )
The general concept is closer to how it was in reality in ancient times, many educated/skilled slaves lead a much better lives than any surf (and cost up to 20x more than uneducated/unskilled once), in major cities, it was perfectly normal to free slaves and in Roman Empire, by law, masters had to provide freed slaves with a trade of their on some other source of income as well. Most people put into such a position would plainly fall in line.I'm ok with other stuff, but prices...
I'm ok with other stuff, but prices...
I believe education or special skills per se were quite rare at that time. If we use this concept in ST, we take for granted that skills and education are just as rare in Pytfall as they were in Roman Empire 1500-2000 years ago, where they didn't have androids or magic (hopefully :) ), that's a bit weird.
AND we don't have classless chars. They all have a class and can do something useful. Thus this concept is not believable, since we don't actually have many uneducated people in the city.
In new dev version we've introduced new "Base" (or class)-traits concept. Any actor can have up to two of these traits and they determine talents and occupation better than any other trait might to help with that system.
base traits do not guarantee that an actor is educated to do the jobIt's not true, classes also have good initial bonuses by design. Init_skills, init_mod, mod fields which you allowed for me to use there.
Yes, profile screen should show final values for stats and skills. As I've mentioned above, you can overwrite getattr/setattr special methods to convert your JoNT st stats directly on the fly so you'll always have the correct values. __getattr__ can be used to return proper values for JoNT module while __setattr__ can mod the PyTFall values directly if PyTFall stats are used and convert from JoNT to PyTFall (modding real PyTFall values) on the fly if you want to be able to increase JoNT values directly. This will work both really fast and convenient...
...
The influx of residents from other worlds brings moar technology and knowledge. Meanwhile Roman Empire hardly had a good opportunity to learn something new from other countries as one of the most developed countries at that time.
The very fact that people from worlds where they know how build an android come to the Pytfall world in appreciable quantities inevitably raises the quality of education little by little.
It's not true, classes also have good initial bonuses by design. Init_skills, init_mod, mod fields which you allowed for me to use there.
Im rather new to python so if its not too much trouble could you show me a code example with chr(self).charisma ( from pytfall ) to chr(self).baeurank (My Mod)
class Girl(PytCharacter):
def __getattr__(self, key):
??? ???
def __setattr__(self, key, value):
??? ???
I tryed the code from ( http://stackoverflow.com (http://stackoverflow.com) ) and worked perfectly on IDLE 3.4 ( i just need something to round up or down.. and a example with __getattr__ __setattr__
atm in using this " chr.baeurank = remap(chr.charisma, 0, chr.get_max("charisma"), 1, 5) " inside girl_sttraining and works well.. but know that you mentioned __getattr__ __setattr__ im curious on how it work as it would clean my code a lot
class Girl(PytCharacter):
ST_STATS = {"st_intelligence": "intelligence", "st_beauty": "charisma"}
def __getattr__(self, key):
if key in self.ST_STATS:
return convert_from_pytfall_to_jont(self.ST_STATS[key], *any_args_you_may_require)
def __setattr__(self, key, value):
if key in self.ST_STATS:
pkey = self.ST_STATS[key]
value = convert_from_jont_to_pytfall(pkey, *any_args_you_may_require)
setattr(self, pkey, value)
You're nitpicking... please stop.I can't ignore flaws in lore logic like you do ::)
So what? What can the best microchips engineer from our time do with tech from 200 years ago? Not a damn thing... tech and manufacturing infrastructure required to utilize that know-how is not realistic to introduce in that time period, it would have to be done little by little based on knowledge of one mortal man.Ah, but we talking not about microchips. We talking about basic education and skills. You can't expect the same level of education as 2000 freaking years ago when there are hundreds if not thousands educated characters coming from portals for years since WM.
We can do with literacy whatever we like, even in rl world, there are many countries with really low literacy ratios.Let's talk about it after these countries will have a steady flow of educated people with nowhere to go.
Yeah but that's not educated for the task, if you are adding skills in high hundreds and stats in 4/5 dozens as init bonuses, you're designing them very, very wrong. Those init bonuses are there not to make sure that a character can do the job with ease at level one.I'm afraid the difference between 50 anal and 500 anal is a bit vague for me, especially since skills are not limited by anything. Stats at least have max levels, so it's more obvious for them.
But I'm not here to talk about it, for now I want to try make a game where I can generate generic npc and make a dinamic gameplay.We have random characters, they are pretty close to your idea of generating npcs.
¿Any suggestion about it? (on the coding aspect)
I can't ignore flaws in lore logic like you do ::)
Ah, but we talking not about microchips. We talking about basic education and skills. You can't expect the same level of education as 2000 freaking years ago when there are hundreds if not thousands educated characters coming from portals for years since WM.
We stop using portals from parallel worlds as universal excuse if you want people to be uneducated.
Let's talk about it after these countries will have a steady flow of educated people with nowhere to go.
Also literacy depends on public education that is free and obligatory, not the level of knowledge or technology.
Ah, but we talking not about microchips. We talking about basic education and skills.
The influx of residents from other worlds brings moar technology and knowledge. Meanwhile Roman Empire hardly had a good opportunity to learn something new from other countries as one of the most developed countries at that time.
The very fact that people from worlds where they know how build an android come to the Pytfall world in appreciable quantities inevitably raises the quality of education little by little.
I'm afraid the difference between 50 anal and 500 anal is a bit vague for me, especially since skills are not limited by anything. Stats at least have max levels, so it's more obvious for them.
Hi everyone, only wanted to say I love the proyect and I'm really interesed in this, as DarkTl say in another response I downloaded the repository to test the game and look at it, I'm a amateur developer on renpy so of course I'm curious about the code.
This moment I'm "working" (at a really low pace) on a game based on the old sim dates, at first the idea was simple but as you expect the game became a "little" complicated, as you can see think about the feaures is easy, the hard part is make it work.
But I'm not here to talk about it, for now I want to try make a game where I can generate generic npc and make a dinamic gameplay.
¿Any suggestion about it? (on the coding aspect)
...
init python:
class GerericNPC(object):
def __init__(self, id, *args, **kwargs):
self.id = id # Must always be unique! We use a lot of random names and surnames from simple txt files, since there are hundreds/thousands of them, collisions are not likely but you can always check for them if you like.
# Rest of the code...
label start:
$ chars = {}
python:
for i in range(100):
char = GerericNPC(generate_random_id(), *args, **kwargs)
chars[char.id] = char
we're not talking about the whole city not being able to read or write (we do have a library/academy).You mentioned many times that slaves capable of reading and writing were very expensive. I figured we have the same situation, when even such skills are rare.
3) Most games skip this part, but they are not even supposed to speak the local languages right off the bat.Damn. It's a good point, I kinda forgot about the language barrier, it makes education from other worlds quite useless :D
You mentioned many times that slaves capable of reading and writing were very expensive. I figured we have the same situation, when even such skills are rare.
Damn. It's a good point, I kinda forgot about the language barrier, it makes education from other worlds quite useless :D
We can use this stuff in ST module, when slaves with specific traits should also be taught the language in order to understand you.
menu:
"What would you like to do?"
"Offer a drink" if location == "bar":
if dice(50):
jump girl_gets_drunk
else:
"She is not in the mood"
"Try to attack her":
$ i = 1
while i == 1:
menu:
"Check area security":
<checks for security>
"Grab her":
if dice(40):
"Success!"
$ i=0
else:
"She runs away. Sux 2 b u m8"
$ i=0
does renpy have something like real time interactions or its just img/img
Yes but real problem will be the submission screen.. so far iv never seen something real time actions like a counter that goes from 10-0 while doing nothing or selection areas other than square shaped..
but as iv said for that screen its possible with those but.. if there was a more active part in renpy i could do a lo more ( as interactivity with girls/BG )
Yeah, that probably would require some work with screen language. Xela can help with it, not me.
You don't have to remake popular packs like touhou/DOA/one piece/etc though, there are many hundreds and even thousands of very high quality pictures.
On the other hand, you can actually add there more characters that don't have enough pictures to be in packs.
You also may want to post them using a more appropriate image hosting service, your archives create nothing but clutter in downloads folder and take time to unpack/enter password without any reason at all.
I like your previous renders much more. These last two look weird.
Personally, I do not mind non-anime packs if they look good. After all, there are even packs with real life porn actors in WM.
Id like to but no idea how to link them here as images
[url=http://postimg.org/image/4xt62ndzl/][img]http://s24.postimg.org/4xt62ndzl/chr1againstexposed1.jpg[/img][/url]
Ok lets try to post a img...
(http://s20.postimg.org/jlux9p4e1/chr1againsttied1animev2.jpg) (http://postimg.org/image/jlux9p4e1/)
Ok its working..
(http://postimg.org/image/jlux9p4e1/)
Btw I noticed that we don't support light and dark background for items any longer. Is it intentional?
Btw I noticed that we don't support light and dark background for items any longer. Is it intentional?
Yeah, Gismo hated that so he came up with something in between and told us not to use any icons that may look bad with it :)
Looks good. My only concern is that this will require insane amount of images to cover everything.
or the fact that if we goes that way i will have too much image to do and your afraid i wont push img updates ?
For the images Workload i could give you my files and free programs needed to use them and the configuration setting to import/export from each other.. after that all depends on your skills with those programs.. so if you want to make content faster you could do it.. and if im away for some reason someone else could continue it..
Most of my files are template based so you just need to load the template for ( icons / equdoll clothing / action clothing / and so on.. ) so its like make an item or mod a existing one load it in the template then render and its done..
For the code i noticed a few lines in the Dev version with "pyt_eqdoll" and after looking up the code.. i was thinking cool already thinking for the future and preparing stuff there..
but of course its not implemented a equipment doll system now but since those lines where there i decided to move things on my side so you would get content when its ready..
( and for me to mod something on the latest version for my rchar since i want her to swap clothes and be able to see the change in either equipment screen or rendered actions )
As for the numbers of rchars it does not matter.. once every template is done it will be like morphing the char face/swapping hair style/adjusting body type.. ( i got a large content library to do so.. or mod something that you want.. ) all done i a few minutes with sliders.. and you will get another char.. then its around 3-10min to render 1 image for that new char ( and im only using cpu render witch is slower than gpu renders )
Sailor First..
(http://s20.postimg.org/6b30wvud5/Sailor_Equiped.jpg) (http://postimg.org/image/6b30wvud5/) (http://s20.postimg.org/f4txdzhbt/Sailor.jpg) (http://postimg.org/image/f4txdzhbt/) (http://s20.postimg.org/4thklbpmh/Sailor_Full.jpg) (http://postimg.org/image/4thklbpmh/)
Let me know if something is wrong
Didn't we decide to split the suits into bits? This is excellent regardless of that :)
No, equip doll is plainly the sprite we add to the equipment screen paired with positioned slots. To change the clothing on sprite or to change the sprite based on equipped item simple function would have to be written paired with adding new fields to items data file(s) and relevant loading func. Depending on complexity of design, whole thing can take from 10 mins to 10 hours but I doubt it'll be more than that (the only way that it will is if we decide to build OW like doll which will require careful positioning of clothing, possible re-sizing and layers), such system is still not very hard to code in but will take time to get write through trail and error.
What do you mean by bits ?.. like top and skirt separate ? leggings/shoes always are separate but i show them in full render when i decide to add them.. ( but can be done later on )
I already tryed the layer system.. you just add the clothing image on top of the body thats all.. ( no positioning or resize needed )
Use this as base..
(http://s20.postimg.org/uw3t9tf95/Against.jpg) (http://postimg.org/image/uw3t9tf95/)
Then with gimp or other program to add layer on.. use either ones..
(http://s20.postimg.org/c51vznkop/Cleanedropes.jpg) (http://postimg.org/image/c51vznkop/) (http://s20.postimg.org/jmb3eva7t/Schoolswimsuit_Against_Cleaned.jpg) (http://postimg.org/image/jmb3eva7t/)
Of course the clothing image is not perfect and sometimes get transparency problems.. but its fully automated.. the result you see is made by pressing a button.. so with little work with editing manually they could be perfect.. unless i improve my automated method..
Same will work for every pytfall item once i make/render them.. you just past them on top ( but you might need to set some items to specific layer like cloak above all else.. while some goes under others and so on..
Didn't we decide to split the suits into bits?We (you and me) did not, at least yet :)
Maybe stockings as well (I don't think that we have a eq spot for this), shoes most definite.The problem with underwear and stockings slots is that they are quite situational. When you wear a full plate armor, they don't matter, and you probably can't even wear stockings properly (I think). Also the only way to get many icons for these slots is to render them, they are way too rare without rendering.
...
Hm. Where are formulas for calculating damage and stuff inside BE?
def effects_resolver(self, targets):
"""
Logical effect of the action. More often than not, it calculates the damage.
Expects a list or tuple with targets.
This should return it's results through PytCharacters property called damage so the show_gfx method can be adjusted accordingly.
But it is this method that writes to the log to be displayed later... (But you can change even this :D)
"""
Are you sure it's ok to have two effects_resolver functions (one of them is not global, and used for poison only)?
How can I access specific fields of equipped weapons during calculations, like type?
char.eqslots["weapon"].type
char.eqslots["smallweapon"].type
Also, how double weapons work at the moment? You still select which one to use, like it used to be?
+ if name == "CrossbowAttack": #different weapons have different power of crit
+ multiplier += 0.2
+ elif name == "KnifeAttack":
+ multiplier += 1.0
+ elif name == "ClawAttack":
+ multiplier += 0.4
+ elif name == "FistAttack":
+ multiplier -= 0.4
+ elif name == "CannonAttack":
+ multiplier -= 0.6
+ elif name == "RodAttack":
+ multiplier -= 1.1
+ elif name == "AxeAttack":
+ multiplier -= 0.2
+ elif name == "BiteAttack":
+ multiplier += 0.5
+ elif name == "GunAttack":
+ multiplier += 0.3
+ elif name == "ScytheAttack":
+ multiplier += 0.6
+ elif name == "SprayAttack":
+ multiplier -= 0.7
+ elif name == "ThrowAttack":
+ multiplier -= 0.1
+ elif name == "WhipAttack":
+ multiplier += 0.4
...
@Dark:
In addition to that, why are the -ja attacks carry less power/cost less than their -ga counterparts? They are supposed to be moar elite.Atm spells are balanced around their tier and area of effect, not around names. In case if you don't know, in most FF games the weakest and the strongest spells target one enemy, and all others target all enemies.
SE is just a way of acquiring items/moving quests to next step, they should not prevent anything.I mean I cannot finish existing ones properly atm.
Classes you can take care of yourself if you like, we at the very least need a better normalization routine when assigning them.I dunno. Let's say we have a dancer class, but in fact there will be no dancing at all, except maybe for striptease, and that job has strippers already. So dancer class will be quite useless.
You'll have to clarify on the click-and-point exploration cause I don't really understand why party change screen is required there.- we cannot guarantee that MC is able to fight. Moreover he might or might not be able to fight regardless of class, it's up to players. Sure, a warrior will do it better, but non-warrior still could or could not be used in BE.
I dunno. Let's say we have a dancer class, but in fact there will be no dancing at all, except maybe for striptease, and that job has strippers already. So dancer class will be quite useless.
- we cannot guarantee that MC is able to fight. Moreover he might or might not be able to fight regardless of class, it's up to players. Sure, a warrior will do it better, but non-warrior still could or could not be used in BE.
- as you find new chars during exploration, you could add them to your party, replacing those with low health for example.
Ok, I'll take a look at jobs code for a start. All jobs are in classes - jobs rpy, right?
# Lesbian ActIt's too simple. Checked skill should be based on selected picture (dunno how to do it in terms of code, you show pics after you select skill there).
elif self.client.act == 'lesbian':
self.skill = "vaginal" # May be overwriten!...
It's too simple. Checked skill should be based on selected picture (dunno how to do it in terms of code, you show pics after you select skill there).
Also in some cases we could use several skills to check (lesbian group for example), but it could wait for next release. Lesbian actions however cannot.
This (https://github.com/XelaPy/PyTFall/issues/135) too.
Atm only bar brawls require guards? Clients never attack whores, don't try to rape someone?
I recall we had various actions during rest depending on girl traits in the very beginning. Not anymore though. What happened to them?
Why is it too simple? I also complete disagree that mechanics should be guided by content, that will create a cluster f*ck in code and gameplay. We cannot think that way...Lesbian actions are much more varied then others. What if there is strapon+anal or 69 action, yet we keep checking vaginal for everything?
Removed for now. Most traits we checked are now gone, some were replaced with base-traits that are not named in the same way. Rest now is also working differently.I don't see them even in comments. Doesn't matter, I'll recreate them using available pics instead, like issue 136 says.
Lesbian actions are much more varied then others. What if there is strapon+anal or 69 action, yet we keep checking vaginal for everything?
I don't see them even in comments. Doesn't matter, I'll recreate them using available pics instead, like issue 136 says.
# REST JOB:
I'm not really sure what do you mean by that question :D
...
I can balance skills levels. But we should decide what to do about skills for a start. I mean this (http://www.pinkpetal.org/index.php?topic=3703.0) thread, where I proposed effective skills levels.
As for preferences, I suppose setting them by character will give the system much more flexibility, allowing to control the business better.
So I wanted to make some rest events, but turns out class Rest(NewStyleJob) is not used atm. Looks like warriors guild has its own resting class, and in brothel you cannot set chars to rest, only to do nothing. Wtf? :D
self.img = char.show("profile", "angry", exclude=["happy"], resize=(740, 685), type="first_default")fixes it and works. But when I try
self.img = char.show("profile", "angry", exclude=["happy"], resize=(740, 685), type="reduce")I get
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in scriptWhy?
$ building.run_nd()
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core buildings.rpy", line 554, in run_nd
self.env.run(until=100)
Exception: (UnboundLocalError("local variable 'mood_tag' referenced before assignment",), UnboundLocalError("local variable 'mood_tag' referenced before assignment",))
Why?
How did it worked? If for profile+angry only profile remained, what did it tried to add?
self.txt.append(choice(["{} is resting.".format(self.worker.name),somewhere, but I don't see it anywhere.
"{} is taking a break to recover.".format(self.worker.name)]))
available += "stage"
available.append("stage")
My bad, it doesn't work for fighting guild. Didn't noticed that the testing girl is there.
Damn, we don't have strippers job available too, surprisingly. Cannot test my changes for pics logic :(
At the buildings screen you cannot open upgrades for test building, and if you try to open transfer item screen, you get
Alright, I improved strip pics and found a possible issue.
There is not enough randomness in showing images. If you set stripping+simple bg, you will get the very same picture for a character over and over every turn, even though there is a dozen or more stripping+simple bg pictures in her pack.
It's a waste of good pictures.
available = list()I tested it with multiple chars, but let's take Warrior random girl as example. She has 7 stripping+simple bg pics. Seven.
if self.worker.has_image("stripping", "stage", exclude=["sad", "angry", "in pain"]):
available.append("stage")
if self.worker.has_image("stripping", "simple bg", exclude=["sad", "angry", "in pain"]):
available.append("simple bg")
if self.worker.has_image("stripping", "no bg", exclude=["sad", "angry", "in pain"]):
available.append("no bg")
if available:
self.img = self.worker.show("stripping", choice(available), resize=(740, 685), type="first_default")
elif self.worker.has_image("stripping", "indoors"):
self.img = self.worker.show("stripping", "indoors", exclude=["sad", "angry", "in pain"], resize=(740, 685), type="first_default")
else:
self.img = self.worker.show("stripping", exclude=["sad", "angry", "in pain"], resize=(740, 685), type="first_default")
The code
I tested it with multiple chars, but let's take Warrior random girl as example. She has 7 stripping+simple bg pics. Seven.
Yet the game ALWAYS shows only one picture, 00B7-nd-e2-e5-c1-ca-l2-a1.jpg. It has nothing special about it compared to others. And others don't have negative emotions I excluded.
if available:
self.img = self.worker.show("stripping", choice(available), resize=(740, 685), type="first_default", add_mood=False)
elif self.worker.has_image("stripping", "indoors"):
self.img = self.worker.show("stripping", "indoors", exclude=["sad", "angry", "in pain"], resize=(740, 685), type="first_default", add_mood=False)
else:
self.img = self.worker.show("stripping", exclude=["sad", "angry", "in pain"], resize=(740, 685), type="first_default", add_mood=False)
kwargs = dict(exclude=["sad", "angry", "in pain"], resize=(740, 685), type="first_default", add_mood=False)
if available:
self.img = self.worker.show("stripping", choice(available), **kwargs)
elif self.worker.has_image("stripping", "indoors"):
self.img = self.worker.show("stripping", "indoors", **kwargs)
else:
self.img = self.worker.show("stripping", **kwargs)
Yup, it's auto_mood :)
I'm trying to be moderate with excluding pics by background or emotions to provide enough variety. Otherwise good players (with always happy girls) will be punished by seeing only happy pics, and not confident, suggestive or indifferent.
Or maybe it's even wiser to disable auto-mood by default and only use it when specifically requested in the function...
def get_act(self, tags):I understand that you check if the girl has images with has_image.
acts = list()
for t in tags:
if isinstance(t, tuple):
if self.worker.has_image(*t):
acts.append(t)
elif isinstance(t, dict):
if self.worker.has_image(*t.get("tags", []), exclude=t.get("exclude", [])) and dice(t.get("dice", 100)):
acts.append(t)
I don't understand how this works.
I understand that you check if the girl has images with has_image.
tags = (("gay", '2c lickpussy'),
("gay", "bc lickpussy"),
("gay", "2c lickanus"),
("gay", "bc lickanus"),
("gay", "2c vaginalfingering"),
("gay", "bc vagnalhandjob"), # @Inconsistent tagnames!
("gay", "2c analfingering"),
("gay", "bc analhandjob"), # @Inconsistent tagnames!
("gay", "2c caresstits"),
("gay", "bc caresstits"),
("gay", "bc hug", "2c hug"),
("gay", "2c vaginal"),
("gay", "bc vaginal"),
("gay", "2c anal"),
("gay", "bc anal"),
("gay", "2c vaginaltoy"),
("gay", "bc toypussy"), # @Inconsistent tagnames!
("gay", "2c analtoy"),
("gay", "bc toyanal"), # @Inconsistent tagnames!
{"tags": ["gay"], "exclude": ["2c vaginal", "2c vaginaltoy"]}
)
Why do you check for types with isinstance?
What (*t.get("tags", []), exclude=t.get("exclude", [])) and dice(t.get("dice", 100)) means?
*t.get("tags", []),
for t in some_container:
# ...
dict.get("key", some_default)
if dice(90):
if self.worker.has_image("profile", "happy", exclude=["nude"]):
# Add tag to the pool to randomly choose from.
Get_tag returns available image of position as act, then we show it via self.img = self.worker.show(*act, **kwargs).
I'd like to check what kind of image we actually show here, ie what kind of tags it has besides position tags.
This way we could add additional text based on background for example. I suppose I could modify show function to return image path too if needed, but I dunno how to get tags from image path.
Get_tag returns available image of position as act, then we show it via self.img = self.worker.show(*act, **kwargs).
It can be done like you describe for sure. Like, if we have vaginal, we begin to check if we have vaginal + indoors, then vaginal+no bg, then vaginal + beach, etc. Then make another list with existing locations. Then pick one from the list randomly, and based on the picked one add description before giving it to show function.
But it means tons of confusing and excessive code at least for two jobs, whores and rest. Because we don't care where they do it, yet describing the place would be nice.
I'm not sure if autobuying system is working atm, probably not. But we could include it into rest process to send characters to buy something at free time and report about it.
Yeah, looks like they buy stuff from time to time. Where is the code for that? I might be able to improve it.
Do we get the most needlessly complicated skills system award? :)
Maybe we'll simplify this greatly in the future...
Alright, then we need to decide how fast skills will grow without using powerful items. I believe you mentioned something like 1-2 per day at best, which means 5.5 years for 2000 and 13.5 years for 5000.
Are you sure about it?
C'mon, it's not nearly as complicated as in some other games 8)Code: [Select]Do we get the most needlessly complicated skills system award?
Maybe we'll simplify this greatly in the future...
if self.inventory:This is your code that returns a list of existing items in character inventory.
hasitems = set(list(items for i in self.inventory))
else:
hasitems = set()
for key in self.eqslots:
if self.eqslots[key]:
hasitems.add(self.eqslots[key])
if any([i for i in hasitems if i.slot == "body"]):
# We have at least one item with body slot.
You have that comment there, "This assumes that a free! girl! is buying". Is there anything that prevents us from allowing trained slaves to use shops if you give them money, like in SM?
I don't like how all characters follow the same pattern, visiting shops strictly if self.flag("day_since_shopping") > 5. It probably could be trait based.
Is there any difference in terms of speed between if ((a>b) and (c>d)) and if all(a>b, c>d)?
if a>b and c>d:
# Do something...
source: list of inventories to draw from (We assume that only consumable items are to be equipped from other inventory than that of an instance of self)I don't understand this one in context of autoequipping.
I don't understand this one in context of autoequipping.
Do you allow chars to share consumables or something?
About speed, to shuffle quite big lists when we need just to randomly pick a few different elements from them seems unreasonable. I wonder if there is a better way.
list.pop(random.randrange(len(list)))
shuffle(list)
list.pop() # as many times as needed.
That's a lot of removed code. Don't tell me you gave up on that simpy thing.
$ auto_buy_items = [item for item in shop_items if item.usable and not item.jump_to_label]
What item.usable means?
NOT_USABLE = set(["gift", "quest", "loot"])
NOT_TRANSFERABLE = set(["gift", "quest", "loot"])
NOT_SELLABLE = set(["quest"])
CONS_AND_MISC = set(['consumable', 'misc'])
def equip_for(self, purpose):Why do you unequip weapon here?
"""
This method will auto-equip slot items on per purpose basis!
"""
returns = list()
if purpose == "Combat":
if self.eqslots["weapon"]:
self.unequip(self.eqslots["weapon"])
for slot in self.eqslots:
if slot.startswith("ring"):
slot = "ring"
if slot != "consumable":
# The idea is to increase any particular stat to it's maximumand then this code
# Maximum raising should be coded in at some point as well
# We do the same thing for max stats:So max is properly coded atm after all?
for stat in item.max:
if stat in self.stats: # Not useful?
if item.max[stat] > 0:
possible_bonus += item.max[stat]
if stat in target_stats:
# This is not perfect, but it shouldn't matter (max at the game start issue)
if self.stats.max[stat] + item.max[stat] < self.stats.lvl_max[stat]:
bonus += max(0, item.max[stat])
# For equippables, we want this to triple as being extra useful!
if slot not in ["misc", "consumable"]:
bonus = bonus + item.max[stat] * 2
else:
bonus += max(0, self.stats.max[stat] - self.stats.lvl_max[stat])
else:
if stat in exclude_on_stats:
penalty += item.max[stat]
So max is properly coded atm after all?
I believe autoequipping requires some optimization too, at very least you use there & instead of intersections.
Also, I suppose we could use a separate algorithm and a function to take care about restoring health, mp, vitality and joy. Since we don't have to increase max or use the best possible one there.
I think it already works like that... at least it is supposed to.I don't think so... For a start, I don't see where you exclude restoring items from max part for example.
I don't think so... For a start, I don't see where you exclude restoring items from max part for example.
Besides I don't see a single mention of joy in the code, while some items have a great impact on it, yet its mechanics are close to vitality.
Also there is a difference between using consumable stuff such as makeups for increasing charisma and restoring health.
There is no reason for us to not use temp consumables like makeups unless current charisma=max possible charisma already. More charisma always means more income in theory.
But if we have 99/100 health, it would be wise to ignore it. It's ok to have not 100% of health all the time, not to mention vitality or mp. In general we don't have to try to restore them completely, 85-90% should be enough.
If we have 80/100 health, it would be wise to use some food to restore it. If we have 70/100, it would be wise to use a small potion which restores 25 points or food. If we have 40/100 health, we use should try to use medium or two small ones before using better ones. If we have 1/1000, it would be wise to use ultimate healing potion.
We don't exclude restoring items based on max, I am not sure why would we want to.If we want to heal the character and call the autoequipment function with self.auto_equip(["health"]), we follow the usual algorithm which:
Stats are provided to the method, that's why you do not see them mentioned internally.
l = list()Here you have a list of excluded stats. I believe joy should be here too, unless I misunderstood something.
if item.statmax:
for s in item.mod:
if s in self.stats:
if s not in ["vitality", "health", "mp", "gold", "exp"]:
if self.stats < item.statmax:
l.append(True)
break
Can I modify skills and stats checks and lines for them inside jobs?
Or you have some simpy-related plans for them?
If we want to heal the character and call the autoequipment function with self.auto_equip(["health"]), we follow the usual algorithm which:
1) includes finding the best max too, not just make current health close to max health
2) is not limited to restore and food items types
And both things are useless for restoring health, so turns out we do useless calculations. I suppose at very least auto_equip function could use not just slot, but also a list of items types as arguments, even if finding max will remain because you want it :)
Here you have a list of excluded stats. I believe joy should be here too, unless I misunderstood something.
if self.health < 60:during next day calculations, it's wiser to limit it to consumables and maybe miscs, unless you want to equip items that increase max health too.
l.extend(self.auto_equip(["health"]))
Isn't there a difference in terms of speed between filtering out non restore non food items and have 27 to look for mod health, and don't filter them out and have 77 items?
Also, assuming that we'll have drugs and alcohol, it might be useful to set cases when characters begin to use these types of consumables via auto equipment more strictly.
Btw when you run during next day calculations, it's wiser to limit it to consumables and maybe miscs, unless you want to equip items that increase max health too.
To clarify, autoequipment already has slot argument. But I'm not sure if it works like I think it does, because comment for it is "slot: slot" :)
Usually we check traits like if "Shy" in char.traits. But inside jobs you check it like if traits["Virgin"] in self.worker.traits.
I'm confused about traits[] part, why you didn't used if "Virgin" in self.worker.traits?
I can't believe python doesn't have case switchers because the devs feel like they are not needed, unlike other languages...
Together with the lack of labels support it loves to lead me into making super long and complex elif checks ::)
Do you think simpy can handle dates as well in the future? Something like SE, but with other types of events and checks.
Everything SimPy does was possible to achieve with while/for/if/elif/else but that would require thouthands of lines of unmanageable code (I've tried that approach wasting 2 full days of coding on it, just to realize that even if I get it right, it will be impossible to properly work such a shitty system that would have taken me many month to complete).That's what I mean. I figured simpy also makes checks for multiple events simpler.
That's what I mean. I figured simpy also makes checks for multiple events simpler.
I have no choice but to ignore lines like self.skill = "vaginal" and add a new variable skill = self.worker.get_skill("vaginal"), and then pass it to checks instead of self.skill.
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in scriptWe have tones of "lower" checks in various places, that's not something I can remove by myself. I'll create an issue for that.
$ building.run_nd()
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core buildings.rpy", line 553, in run_nd
self.env.run(until=100)
Exception: (AttributeError("'WhoreJob' object has no attribute 'skill'",), AttributeError("'WhoreJob' object has no attribute 'skill'",))
When I removed all references to old system, I gotWe have tones of "lower" checks in various places, that's not something I can remove by myself. I'll create an issue for that.
However, deleting any old " self.skill =" lines results in errors during next day.
While running game code:I pushed it. Have fun with debugging lower stuff 8)
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in script
$ building.run_nd()
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core buildings.rpy", line 553, in run_nd
self.env.run(until=100)
Exception: (AttributeError("'float' object has no attribute 'lower'",), AttributeError("'float' object has no attribute 'lower'",))
I pushed it. Have fun with debugging lower stuff 8)
self.loggs(skill, sexmod)
+ self.loggs("sex", sexmod1)
+ self.loggs("oral", sexmod2)
+ self.loggs("anal", sexmod3)
if "sexmod" in locals():
self.loggs("sex", sexmod)
if "oralmod" in locals():
self.loggs("oral", oralmod)
if "analmod" in locals():
self.loggs("anal", analmod)
What's the difference between bartenders and waitresses jobs? We discussed its logic once a long time ago, but I don't remember that conversation well enough.
I mean, they both distribute food and drinks, so there should be a major difference in mechanics.
Also, I see you still use both reputation and fame in some new jobs like bartender. Can you clarify the difference between them? I recall you even wanted to remove one of them because of their meaningless for the game logic.
===
I'd like to keep the design as simple as possible, without a lot of vars that would make it harder to keep track of. It's not a sound design to make sh!t needlessly complex.
I don't think those are ready yet but logic for those will be more or less the same. I guess that for bartender charisma is more important and for waiter refinement. Also different skill if we have them.In theory, one bartender can serve much more customers than one waitress, but multiple waitresses provide better service. So it should be more profitable to hire bartenders in the beginning, and then gradually add waitresses as you get more demanding customers (but without firing bartenders, since they will stay useful).
For building or workers? We wanted to remove those for workers because it would be weird if those remained when changing jobs...Dunno, I'm looking at them in classes-jobs.rpy. Since you use them, I thought maybe I should too.
For buildings, I've started a detailed thread for discussing that but didn't get much feedback, for now I haven't even decided if each business within a building should track frame/rep or just the building itself... but in my design, difference is thisMakes sense. Stuff like brawling will decrease reputation, but not necessary fame.
Fame: Plainly attracts more costumers.
Rep: Attacks better customers + in the future will help to create returning customers.
In theory, one bartender can serve much more customers than one waitress, but multiple waitresses provide better service. So it should be more profitable to hire bartenders in the beginning, and then gradually add waitresses as you get more demanding customers (but without firing bartenders, since they will stay useful).
Dunno, I'm looking at them in classes-jobs.rpy. Since you use them, I thought maybe I should too.
Yeah, there are loggs for fame and reputation everywhere. Maybe I just will delete them all?
I told you before, all non battle classes should be based on jobs, not the other way around. Current classes are something like a demo.
We should know which stats and skills precisely needed for a job before creating a class for it.
For example, for manager I added int, character, management skill and very small bonuses to teaching and refinement. But I have no idea how useful it will be for the job in reality, aside from management skill of course.
it's kinda too formal.
So, while we allow players to combine classes in any way since there are various unique characters, random generation should be more logical.
- Any double classes should be uncommon, maybe 1.5-2 times more rare than single classes. Because chars with single class get more bonuses from class traits, so are quite useful. This is true for both battle and non battle classes.
- Non-battle subclasses will be only available together with their classes. In order to be a cleaner, the character should be a maid too.
This is because characters like cleaner + anal prostitute will be way too narrowly specialized to be useful compared to others. And even pure anal prostitute will be meh.
- Meanwhile all battle subclasses are at least useful for BE and self protection during events, so they don't have this limitation, and you can get a healer maid or something.
But at the same time battle + non battle class should be rare too. Maybe 1.5-2 times more rare than non battle dual classes (and, respectively2.25-4 times more rare than single classes). I mean, maid assassin sounds kinda cool, but not if there are no normal maids at all.
- Pure battle classes have almost the same algorithm. Double classes should be 2-3 times more rare.
But they don't have the other limitation, when when you have to be a mage to be a healer. You can get any combination of battle classes, like healer defender, or shooter assassin.
You should be able to do something like:I did as you suggested and got this one.Code: [Select]if "sexmod" in locals():
self.loggs("sex", sexmod)
if "oralmod" in locals():
self.loggs("oral", oralmod)
if "analmod" in locals():
self.loggs("anal", analmod)
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in scriptPrepare for debugging :)
$ building.run_nd()
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core buildings.rpy", line 553, in run_nd
self.env.run(until=100)
Exception: (TypeError("object of type 'bool' has no len()",), TypeError("object of type 'bool' has no len()",))
I did as you suggested and got this one.Prepare for debugging :)
I cannot push now, but I can upload jobs file here.
I disagree, they can be perfectly common as long as they make sense. Especially the once that work on similar (or same) stats/skills.I'm afraid that without additional means pure classes will be too rare. Though I suppose it's not a big deal.
Must be changes in testing rpy then... I'll figure it out at home.
len(True)
# or
len(False)
I'm afraid that without additional means pure classes will be too rare. Though I suppose it's not a big deal.
{
"General Pattern Name": {
"Specific Patten Name": {chance: 100, "Possible Subclasses": {"C1": 50, "C2":20}, default: True},
"Specific Patten Name 2": {chance: 100, "default: True"},
"Specific Patten Name 2": {chance: 50}
},
"General Pattern Name 2": {...}
}
We also need a new pattern management for auto-equipping... I am not sure yet how or if we can combine the two somehow.You mean for dual classes? I suppose it should be based on the current job then.
You mean for dual classes? I suppose it should be based on the current job then.
We cannot be picky, good highres mobs icons are not common at all...
Ok, I am going to look into row thing during logical combat
SimPy = Perfect and easy manageable animations but at the cost of always having to see them... right now it is possible to skip the animations bit by bit, I am not sure yet how to do that using SimPy (because it manages it's own loops and generators). I'll keep hacking at it as well, I have some ideas on how to get it to work even without SimPy.I recall players used skipping function inside BE a lot during the first release. We cannot drop it no matter what, I'm afraid.
One thing that I cannot work with in this case is inconsistency, some sprites plainly have empty space that warps their positioning and size... counts both for Actors and Mobs. Even my usual testing case with Hinata/Nami has this issue (Nami's BE Sprite). After I removed the empty space, it got a bit better.Maybe you should download updated packs then, hmm? I bet you have the version right after our global retagging, but since then I improved all sprites, cleaned many images and added some new ones for all my existing packs. Just make sure you completely delete old ones at first.
I was pretty much F*cked without looking up the answer in code ;) This is like an endless loop if you are stupid enough to get this far without paying attention. There got to be a way of saying: Screw you guys, I am going home! :)Lol :D
Btw don't forget, characters have height to determine size of sprites. It probably should work inside BE too.
I recall players used skipping function inside BE a lot during the first release. We cannot drop it no matter what, I'm afraid.
Maybe you should download updated packs then, hmm? I bet you have the version right after our global retagging, but since then I improved all sprites, cleaned many images and added some new ones for all my existing packs. Just make sure you completely delete old ones at first.
You are right about mobs though, I forgot to do the same for them. I'll fix it.
Lol :D
It's more like a placeholder, since I want the password to be found in SE eventually. I was wondering how hard it is to do such a thing in renpy as password entering from a set of options.
There is another option... For those who don't want special effects inside BE we could add an option in settings to disable all effects once and for all.
I'm going to make a big push with cleared mobs sprites. I removed blank space, and also resized them, since some were waaay too big for BE.
I removed blank space
There are some large items icons as well but I doubt that it matters much as long as we predict the images well.It's not true. I resized all items icons to 200x200 a long time ago, with the exception of a few special items which may or may not stay in the game, and even they are not much bigger than 200x200.
This however is awesome because once I can count on all sprites working under the same rules, I can try out new stuff to account for inconsistencies.Some mobs should obviously be larger than others. I suppose mobs could use size string or something, like height for characters.
There are still some frecked up MC images I think, but it's no longer frequent event that I cross one of those (i resized some of those myself in the past).I'll take a look tonight.
2P attacks are messed up at the moment and will require some rewriting (animation times that I wanted to handle with SimPy before).Also iirc p2p attacks don't support sprites shaking.
It's not true. I resized all items icons to 200x200 a long time ago, with the exception of a few special items which may or may not stay in the game, and even they are not much bigger than 200x200.
And redownload all packs already instead of fixing girls sprites by yourself, thus repeating my job :D
I'm not planning to improve existing ones any more, unless there will be a major error or another global retagging, so it's pretty safe to download them at this point. Characters data files aside of course, but they are not a part of packs archives.
Some mobs should obviously be larger than others. I suppose mobs could use size string or something, like height for characters.
Also iirc p2p attacks don't support sprites shaking.
for stat in self.locmod:which (probably) should increase fame of the building.
if stat == 'fame':
self.loc.modfame(self.locmod[stat])
In some jobs you have this stuff:which (probably) should increase fame of the building.
In other jobs you do it like self.locmod['fame'] += choice([0, 1, 1]), which increases building fame for sure.
Should I change it to locmod everywhere?
self.logloc("fame", choice([0, 1, 1]))
self.locmod["fame"] = self.girlmod.get("fame", 0) + value
I suppose we should check all needed combinations once and make a dict with existing ones or something.
What's the difference between self.worker.refinement and self.worker.get_skill("refinement")?
Alright, the whore job is close to be finished. I want to add group actions as well, but that requires actual logic at the level of customers, when they either form a group or come as a group.
Since we never did anything about changing strings depending on genders (only talked about it once), I ended up with passing customer gender to checking function, and then selecting line depending on it.
We do have lesbian acts, which are hard to imagine without females involved :D
Edit: 555s commit is mine 8)
If customers already pick characters depending on preferences, you should add it to reports too because it's kinda interesting.
I also created an issue for customers generation. Bdsm will wait for adding ST, but groups we already can add.
Doesn't renpy use GPU for animations?
As for groups...
We could or could not have a certain number of people in the group action. So in some cases we know for sure how many people do it, and we even know their genders. And in some cases we can write anything, and it won't be contrary to the picture.
So we kinda generate customers groups depending on tags, not the other way around. Unlike all other acts.
I have no idea how to handle that without "cheating" atm. Maybe it'll get better after I add "negotiation" with customers before Job is executed.Why? Atm we check what kind of suitable tags combinations character has before picking one of them randomly and proceed with text and skills manipulations.
Why? Atm we check what kind of suitable tags combinations character has before picking one of them randomly and proceed with text and skills manipulations.
So for groups we check what kind of suitable groups pictures have all available characters in the current building before attaching customers, and act based on results of that check. Might be slow, but on the other hand groups events are supposed to be rare, well paid and exhausting.
I am very much against basing a Sim game on unpredictable factors like images/tags that we have 0 control of.Another solution is to add groups as a special type (maybe even gender) of customers, that are rare and have much more money than single customers. But don't have a specific number of members when we don't want it.
I happened to notice that if min stat becomes > max stat, the stat becomes 0/0. It's not an issue, but I wonder if it's intentional.
Possibly decent ideas from that renpy game above:
- Character can be submissive or self-confident. Submissive ones need less disposition to do stuff, but usually don't act on their own. Self-confident ones have higher checks, but can propose MC to do something (like another pose) instead of simply follow his orders.
This system uses two stats for some reason, in our case it's just character stat.
- Girls are limited only by vitality, but MC has a limited amount of libido tied to, well, capacity. No liquid = no cumming, kinda makes sense.
Maximum can be upgraded there via traits, value restores over time.
- It has drugs system. It uses two stats, one shows how quickly increases the need for fix over time, another one shows the current need for fix. The more the need, the more character is willing to do to reduce it.
Can you add a link? I couldn't find it by name.Do you have an account at pornolab (http://pornolab.net/forum/viewtopic.php?t=2101451)? If not, time to make it :)
We talked about something like that but it's not that much of a priority either.We never discusses possible concepts though. The idea is more interesting than in wm for instance.
...
We never discusses possible concepts though. The idea is more interesting than in wm for instance.
We have and I thought that through a lot myself but it's not a priority, we don't even discuss jobs much which are far more important :)I don't remember...
I doubt I can understand sympy logic without long explanations, and the rest of the jobs code in rpy doesn't need discussions, it needs quite simple improvements on my part and potent writers for moar lines :)
Hm. Not all MCs have sprofile pictures. Or, rather, they use the very same picture as both battle sprite and profile, but with different names. That's a waste of space, the game should do so without it when needed.
Do you think we can afford now to add small special effects to all spells, like in that last Eliont's game? Like, ice reduces agility or something.
You did mentioned rewriting skills. Might as well add effects, if it's simple to code.
I added another new issue instead :)
Advanced portraits logic #147
"Dark Events Mode":D
You misunderstood, it works in one direction. Sad can replace in pain and tired, tired can replace in pain, in pain cannot replace anything.
Happy<>Confident
Sad<>Tired<>In Pain
Angry<>Defiant
Shy<>Uncertain<>Scared
Ecstatic<>Suggestive
Happy>Confident
I don't understand what are you talking about. I manually checked every spell inside BE back then, in the testing mode with goblins.
Where do you calculate payment for jobs? I didn't noticed anything related to it in classes-jobs when rewrote whore job.
What do you mean by "It may be a good idea to split the job in 4 logical parts." in issue 44?
if self.has_image("portrait", "happy"):
tags = ("portrait", "happy")
I know I can. But I will include it into char.override_portrait, so I want to make sure you are not against the idea.
Couldn't you ask at renpy forum about multiple threads?
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in scriptI suppose it has something to do with len_clients = len(self.clients) lines in multiple places, which were there before me.
$ building.run_nd()
File "game/library/screens/pyt - screens - nextday.rpy", line 41, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core buildings.rpy", line 556, in run_nd
self.env.run(until=100)
Exception: (TypeError("object of type 'bool' has no len()",), TypeError("object of type 'bool' has no len()",))
Which version do you mean? Alpha or the current one?The current one Here's an example of the blue I just found:
I mean, I don't really see much of blue text in the current version, so I suspect it's alpha. I don't remember how it looked like, we released it a long time ago.
(http://s14.postimg.org/52chdod1d/screenshot0012.png)
There is a 'alpha', which is downloadable, moddable, etc. It is also very out-of-date.Yeap. The dev version has new features, better gui, better packs, etc. but it's not ready for actual playing because of unfinished parts of the code, so it's pointless to distribute it atm.
There is a 'Development version', which you are discussing and improving, but also not distributing.
I wonder why recovery is '25 health, roughly, if you have any AP spare' rather than 'roughly 25 per AP'?Where is it from?
Normal healing per day, and it's slightly worse than I stated: it's up to 25, based on AP you have left. This is in the Alpha that is downloadable.
The only other option, currently, is potions. Then there's taxes, too. I wonder when I'm supposed to train girls and get them ranks to make them earn more money to help pay the taxes?
I have two: a slave and someone I charmed after about 2 month's work on it. Working on a third(Started on her, then the other turned up). Basically living by the skin of our teeth in terms of money, mostly via Arena. Living in House 2.
You have big plans. The question is if all these glorious massive ideas is...necessary.
The biggest problem with these big projects is they get bogged down because they're trying to do too much, everyone gets tired, and they die slow.
It seems....the heart of the game isn't in place, nor does it...sound...like you're clear what the heart of the game even is.
I mean: What are 'you' trying to do/achieve that would require such a massive framework, shooting up into global politics and grand strategy territory to do?
It sounds like you want 5 different games in 1. That's not impossible, but it's very tricky.
When I said 'you' I meant 'you the character'. What the heck is gonna drive a player to take the world stage from a simple brothel owner, even if they somehow have buckets of money and God-girls...beyond 'because it's there', which is always there.
I mean: What are 'you' trying to do/achieve that would require such a massive framework, shooting up into global politics and grand strategy territory to do?Quests and story, obviously.
a player to take the world stage from a simple brothel ownerA player doesn't have to be a brothel owner btw.
stripper job without CTDs
On the other hand, we might not know where character face is, so it might lead to weird effects. We could also enlarge portrait a bit during scene, it's probably safer.
I have to ask how do you see the logic of refusing because of wrong profession, because I'm not sure how to handle it.
Let's say we have a cleaner and a waitress. They both are servers, as general occupation. Should there be any issues when you try to make a cleaner to work as waitress and vice versa, aside from obvious lack of required skills?
I am also considering adding those checks during assignment, so we don't have to deal with unwanting, but I am not 100% sure if that is the right way.Hmmm. I like the idea. Such characters might lose joy and vitality much faster instead of constant chance to refuse which could be irritating for player.
Well, testing BE mode is messed up completely for sure :D
Hmmm. I like the idea. Such characters might lose joy and vitality much faster instead of constant chance to refuse which could be irritating for player.
Hm. In the Eliont game all spells also have recharge time, in turns. Might be useful too for us.
I'll prolly have to flip cataclysm into FilmStripIt won't be simple. I tried to find a plugin which can combine layers into film strip, but unsuccessfully.
It won't be simple. I tried to find a plugin which can combine layers into film strip, but unsuccessfully.
On the other hand, plugins for gimp are made in python, so you probably can write one by yourself :)
I think it was a gif initially, it was you who pointed out that we can just convert gifs to filmstrips.All tools I've seen convert animations into filmstrips, not separate images. That's why all spells added by me are filmstrips. I dunno how you even managed to convert a gif into 55 images -_-
All tools I've seen convert animations into filmstrips, not separate images. That's why all spells added by me are filmstrips. I dunno how you even managed to convert a gif into 55 images -_-
I wanna try projectile spell that hits three targets with individual attacks, that should be possible now :)
I tracked the issue down to death effect with dissolve
Mmm, you do know that Solar Flash does CTD, right?
toy with some basic saturation/tinting/brightness manipulations and see if there some feature for BE in that area (like maybe new damage effect)...
it is likely that dissolve is forcing animation to continue for as long as it is alive. I'll take a look at how that can be solved.
You mean stuff like color filters? For example, make the whole screen a big red during Cataclysm?
Ahh, yeah, they do it often in jrpgs :)
I suppose massive spells could use full screen color change for 0.5-1 second when they strike the ground. If it will look good enough.
Why do you replaced shake gfx with fire? You can't use both at the same time?
Did you kill anyone with arrows yet btw?Looks awesome! :)
If you willing to play with effects, you can make a unique death animation for every element. Like, for fire the target becomes black and crumbles into dust, being burned out.
I mean stuff like fading+waving effect like this (http://dev.physicslab.org/img/260deafe-947d-4fb4-b504-00bfea1af215.gif) one for water, or for air fading + slow enlarging of sprite, to show how the target dissolves in the air. Or maybe this (http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=29544) circle based transition, might look better.
We can live without it of course, but spells will look a bit better.
You can add special death for fire, target becomes black and either fades out or does the same thing you do for fire arrow, but using smaller parts, because ash particles are very small.
issue 18 is there.
So we can afford plenty of global and good looking spells like your Cataclysm.
Do you think you can make an alternative for shaking, when the sprite is slightly thrown back and then returns to its original location? Will be very suitable for evasion.
def get_attributes_multiplier(self, t, attributes):I want to improve it further after we'll add skills for different types of weapons. For now I compare levels and agilities.
"""
This calculates the multiplier to use with damage.
"""
multiplier = 1.0
effects = list()
a = self.source
if any(list(i for i in ["melee", "ranged"] if i in attributes)):
evasion_chance = round (0.5*t.level + t.agility - 0.5*a.level - a.agility)
if evasion_chance > 0: # evasion
if evasion_chance > 90:
evasion_chance = 90
if dice(evasion_chance):
multiplier = 0
effects.append("missed_hit")
Do you think you can make an alternative for shaking, when the sprite is slightly thrown back and then returns to its original location? Will be very suitable for evasion.
I know, that's why asked you to do it :)
After all, the original battle system doesn't actually support dodging, I did it solely via making zero damage multiplier designed to increase damage for crit hits.
Remember the lesbian scene for arbitrary characters you wrote?
In order to know if it should be available or not in the menu I need to check somehow if the scene is going on in a building with other female chars, and not anywhere else.
That reminds me, we used to support restoring items inside BE. This functionality should be restored somehow.
The way how we select a normal weapon attack atm doesn't look good. Very different weapons can use the same BE skill, so it will be confusing. And it's too straightforward in general.
I suppose we could show the name of equipped weapon or left/right hands options. Maybe even use some kind of minigame to pick a weapon if two weapons are equipped.
def check_submissivity(c):I googled that
mult = c.character/c.get_max("character")
...
You're using Python 2.x, where integer divisions will truncate instead of becoming a floating point number. You should make one of them a float.And after I changed it to mult = float(c.character)/float(c.get_max("character")), it began to work.
The goal is to use two weapons slots smarter than picking one of them every singe time you want to attack, which is a pure waste of mouse clicks.
Just wow. That sucks big time. Now I have to check all my divisions in the game to make sure they work as intended ::)
So they had int() to return integer, and float() to return float. Why did they even bothered with round()?
Waaait, in python "//" is supposed to be an integer division. But since in 2.7 "/" IS integer division, what "//" does there? I actually used it recently, and it didn't gave me an error. I'm confused :D
The / operator performs floating point division if at least one operand is a float, or integer division if both are ints.And here I thought python is supposed to have a clear syntax and to avoid complexity. Nice job making multiple divisions with minor differences that also work differently in different versions.
The // operator performs integer division, producing an int if both operands are ints, or a float that is a whole number, if at least one operand is a float. If there is a fractional part in the result, it is discarded, but we still have a float, ending in .0.
you're limited to a few workarounds. The most popular is to coerce one of the operands to a float. One robust solution is a / (b * 1.0)
Commonly seen is a / float(b). But this will raise a TypeError if b is a complex number - this may not be what you want.A language of workarounds...
Let's google a bit more.A language of workarounds...
In python 2.7And here I thought python is supposed to have a clear syntax and to avoid complexity. Nice job making multiple divisions with minor differences that also work differently in different versions.
Here we go. (http://truthaboutrenpy.blogspot.ru/2012/05/pytom-is-satanist.html)
Sad, really sad ::)
1. You must refrain from posting vulgar words.
3. You must not post any kind of blasphemy.
4. Don't whine if your comment is not approved as soon as you posted.
"I’ve come to the conclusion that PyTom is a Satanist."
The revive spell is unavailable until you have a dead party member?
How come it's so hard to not mind people like that? I am still glad that Ren'Py got the attention of at least on of those assholes, religious fanatics truly seem to stick their nose everywhere these daysYou should read the very first post in that blog, May 05.
The problem is that death is hard to achieve in the testing mode.
The problem is that death is hard to achieve in the testing mode.
You should read the very first post in that blog, May 05.
thanks to the dark screen
I could if you want music and monsters sounds (about 25000 files, too large for db). As for animation, I still sort it out.
effect.skill.thunderStorm.0.0.pngIf you try to scroll frames in standard windows viewer, the animation will be perfect. Since all it does is shows the image right in the center of the window, you should do the same if you'd like to use it, ie set some coordinates witch will be the center for all frames of the spell.
This one is really nice... but I am still not sure how the hell are we supposed to load it onto the game.
I don't unpack skills you already have in your db. At least try not to.
If you try to scroll frames in standard windows viewer, the animation will be perfect. Since all it does is shows the image right in the center of the window, you should do the same if you'd like to use it, ie set some coordinates witch will be the center for all frames of the spell.
Too bad mobs and items icons are very bad in that game.
As I've said, original resources (that you're ripping) seem to be a proper animations on transparent background...Well, you see yourself how original animation requires multiple custom algorithms to be used. Removing bg might be easier.
It's just matter of moving code from check_occupation to assignment screen.I'm not entirely sure how to work with screen language there. I suppose you should create logic when stuff checks every time when you try to change character assignment, and only those jobs character agrees to do will be visible in the list. Then I will be able to modify checks according to this logic.
So, does simpy allow clients to visit the same place over and over? Like, drink at bar, visit a whore, watch some striptease, then visit a whore again, then drink at bar again?
I thought about adding bonuses and penalties (and lines for them) to usual jobs checks based on dice and some traits, like in wm ex.
Do you have plans to add traits based preferences for other existing atm jobs, like the whore job has?
it should be a part of customers own social levels.
Alright, so the general jobs structure:
- we check which available jobs the character agrees to do, and show only them at the assignment screen.
- traits and some stats may affect the whole turn, and if they do, we show a line about it like in wm ex (it was one of my favorite parts :) ). I mean stuff when for example nymphomaniac trait with dice(50) gives a small bonus for whore job, like less vitality per act. Or adventurer gives small penalty to cleaning skill for cleaning job. It should be checked only once in the beginning of the turn, and work the whole turn for all checks during it.
- we check general stat/skill level, then check how stratifying they were for every customer based on customers expectations.
- in the very end, after all skills/stats checks, we calculate once fame and reputation changes.
That should be coded by you before I will be able to write actual lines and checks :)
"Whole turn" is what? A single job execution?I mean we don't check it for every customer separately, if there are many customers.
I think you should do it full screen.
enlarged
That's not a good idea, you should plainly do the: Transform("name", size=(1280, 800)) instead of Transform("name", zoom=(1.1)) we have now.GIMP's resizing plugins are supposed to do it better than renpy in terms of quality. Doesn't matter, it's fine too atm.
added new "iced" damage to sprite effect where we get a pattern from a mask image and overlay the sprite with it (it works well but I could only find a really sh!tty ice pattern .jpg).Actually, it looks quite well. Too bad it's not supported by SimpleMagicalAttack, I wanted to add it to Hailstorm.
GIMP's resizing plugins are supposed to do it better than renpy in terms of quality. Doesn't matter, it's fine too atm.
I created new sfxs for your new spells based on db stuff.
Actually, it looks quite well. Too bad it's not supported by SimpleMagicalAttack, I wanted to add it to Hailstorm.
Now, if you can overlay sprite with animated picture, like this (https://upload.wikimedia.org/wikipedia/commons/2/22/Animated_fire_by_nevit.gif) one, we'll have unique fire damage :)
When I try to add it to Hailstorm like target_sprite_damage_effect={"gfx": "iced", "initial_pause": 0.1, "duration": 1.9}, nothing happens. When I try target_sprite_damage_effect=[0.1, "iced", 1.9], it just gives an error.
When I try to add it to Hailstorm like target_sprite_damage_effect={"gfx": "iced", "initial_pause": 0.1, "duration": 1.9}, nothing happens. When I try target_sprite_damage_effect=[0.1, "iced", 1.9], it just gives an error.
target_sprite_damage_effect={"gfx": "iced", "initial_pause": 0.1, "duration": 1.9}
Damn :)
There is a small bug, if you try to "Terminate" BE testing mode while spell animation is playing, the game begins to behave strangely. Character portraits and music disappear, but you remain inside BE.
Now, if you can overlay sprite with animated picture, like this (https://upload.wikimedia.org/wikipedia/commons/2/22/Animated_fire_by_nevit.gif) one, we'll have unique fire damage :)
Looks like you forgot to push then :)
Either way, there shouldn't be the menu for picking weapon skill, at very least outside of testing mode.
There is a possibility that both weapons will have the same attacking skill. Thus we cannot directly use skills names in the menu anyway.
I suppose there should be the name of weapons, or maybe weapons icons.
Hmm. Jobs code picks texts depending on poses irrationally. You code it to check availability for all possible poses, form a list of available ones and pick one from the list randomly.
But since we allow all poses, we don't need all those long checks, we can get pose via get_image_tags after we pick a random sex picture.
We'll also have to review how elements work so having a single element is preferable to multiple elements or the entire system is f*cked. Maybe also bind spell learning to elements.And these things are opposite. If you need traits to learn spells, multiple traits become preferable to a single element trait, because you more likely will have a counter spell against enemy weakness with many different spells.
And these things are opposite. If you need traits to learn spells, multiple traits become preferable to a single element trait, because you more likely will have a counter spell against enemy weakness with many different spells.
Fitting together a whole game is not an easy road.
Phew, another huge random pack is out of the way.
Btw I'm not sure what to do with healing if you will need traits to learn appropriate spells.
Speaking of which. I recall you were very much against resurrection of any kind at all, saying that death should be a major thing.
And now not only there is a check that prevents death during jobs, but also a spell.
Are you guys gonna make an editor? (like the one for whoremaster), Cause xml and json files don't have an editor built into windows like the .girlsx files do.(cause .girlsx files are renamed .txt files. :P )
class BE_AI(object):
File "game/library/interactions/GM - chat.rpy", line 4, in scriptAnd if I do it like a = [choice(char.traits)], then "a", it works.
"[choice(char.traits)]"
KeyError: u'choice(char'
Yeah, now I have 4G and nothing to do for days until they release me ::)
What's wrong with "[choice(char.traits)]"? Why it gives And if I do it like a = [choice(char.traits)], then "a", it works.
Finally at home :)
We shouldn't show elements in the traits list for MC, like we don't show them for other chars.
Alright, so the general jobs structure:I actually wrote many lines for jobs in the hospital, but until these parts are done, I simply cannot add them, there is no place for them atm.
- we check which available jobs the character agrees to do, and show only them at the assignment screen.
- traits and some stats may affect the whole turn, and if they do, we show a line about it like in wm ex (it was one of my favorite parts :) ). I mean stuff when for example nymphomaniac trait with dice(50) gives a small bonus for whore job, like less vitality per act. Or adventurer gives small penalty to cleaning skill for cleaning job. It should be checked only once in the beginning of the turn, and work the whole turn for all checks during it.
Personal characters reports should contain general info about the work, like how many clients they served, how much gold earned for the turn, etc.
Btw I see many clients like characters for having Neutral trait. It's very weird even for a brothel :)
Well, I believe there should be short reports and long reports. In long ones we tell how every single customer picked characters, how well they worked, which pose they used, etc. That's what we do now in buildings reports.
In short ones we simply tell everything at once. Ie how many customers they had, how many were pleased, income.
I'd rather used race (even Human, which might be a thing in a world with many races) than elements, which are normally not obvious, unlike appearance traits.
The way I see it, it should be based on occupation, disposition, slavery status and traits. I suppose it should be checked the moment you click on the changing assignment button.
I don't really think slaves should be guards or something like that, not allowing to fight.
Let's see... So now every job has self.disposition_threshold, which even could be a bit different depending on stuff like traits.
Do you still run check_occupation part? It's a good place to handle the remaining (non refusing) logic.
Do you run check_occupation once per turn, or before every customer?
I need to access character inside def __init__(self), where you set self.disposition_threshold, in order to run checks there. Looks like normal means like char of self.worker don't work.
def __init__(self):And it never appears in the job list regardless of disposition.
...
self.disposition_threshold = self.determine_disposition_level
....
def determine_disposition_level(self):
disposition = 300
return disposition
Seriously though, I mentioned that there will be checks, not just plain disposition level. And yet you code it in a way that gives me troubles with checks -_-
Well? :)
class StripJob(...):
bla bla bla...
def is_valid_for(self, char):
# bla bla bla
What about free characters leaving with low disposition?
class ServiceJob(NewStyleJob):which has its own check_occupation.
"""The class that solves Bartending, Waitressing and Cleaning.
TODO: Rewrite to work with SimPy! *Or this actually should prolly be split into three Jobs...
"""
def __init__(self):
"""
This is meant to pick a job that makes most sense out if Cleaning, Service and Bartending
"""
For some reason I don't see stripper job available, even for slaves which don't have any restrictions.
Service jobs are less ready for my lines than I thought. For a start some of them have their own check_occupation, and some don't. At the same time we have which has its own check_occupation.
Looks like you will need to clean service jobs a bit to make it as understandable and clear as whore and stripper parts.
We used to have upgrades. Not the best ones, but not the worst ones either, they would be a good food for thought. Atm I don't even see their tracks in the code.
For some reason I don't see stripper job available, even for slaves which don't have any restrictions.
Are you sure? It seem to be working on my end...It's testing.rpy again, I downloaded yours.
So you want all upgrades to give something truly unique? Like, enabling group, well paid actions for whores, for example?
Matrons could:
- rewrite customers preferences with a certain probability to available ones.
- disable negative customers traits with a certain probability, like aggressive.
- increase the amount of money customers are ready to spend (they don't bring ALL their money when they go to your establishment).
- reduce the impact of displeased customers on reputation.
- reduce disposition level needed to set characters to "wrong" jobs.
- provide actual micromanagement, ie set characters to autorest when needed and return back to the job after they rest.
I suppose player will have to pick one of these options per manager.
That contradicts your wish to make upgrades truly unique :)
I noticed that you tried to balance the job a bit, how difficult was it/how far did you get?I balanced everything but income and payment. Mostly because money code is scattered over multiple files, but also because we need all jobs available before doing it with money.
I believe managers should have limited ability to watch over characters, probably based on management skill level, something like 5 + 1 character per 100 management skill.
I balanced everything but income and payment. Mostly because money code is scattered over multiple files, but also because we need all jobs available before doing it with money.
In terms of stats it's not difficult. Since we have so many ways to increase stats, jobs should not be effective in that regard.
So, with other words: meaningless and to difficult to relay to player effectively :)Of course. A whore could have multiple customers per turn. If they all will give a huge chance to upgrade stats/skills, chars will be maxed out very quickly, making items and schools useless.
Well, for instance autorest options should be controlled by managers, not just happen. And if one manager can watch over infinite amount of chars, it makes hiring more managers questionable.
AP is certainly useful for actions outside of the next day routine. If you want to have multiple types of AP, it might be very confusing.
Of course. A whore could have multiple customers per turn. If they all will give a huge chance to upgrade stats/skills, chars will be maxed out very quickly, making items and schools useless.
I am not sure why we want auto-rest to be controlled since all it does is putting worker to rest when they cannot work anymore. Your suggestion would make perfect sense if workers could continue working with penalties even after their fatigue was low, but that is not presently the case.In many other games an attempt to put a way too tired character to work ends up with either high chance of illness or wasted turn.
That's why I am saying that we could do the whole thing at one place under the same code and set flags/counter during the job routines. It's still just a thought on how we can try to make the design more manageable.Will be difficult for whores at very least, since they get different skills bonuses depending on acts (anal, vaginal, etc). All other jobs so far are more predictable though.
In many other games an attempt to put a way too tired character to work ends up with either high chance of illness or wasted turn.
Will be difficult for whores at very least, since they get different skills bonuses depending on acts (anal, vaginal, etc). All other jobs so far are more predictable though.
Ok, then is there a reason to have more than 1 manager per building? If no, it will be the less demanded class ever so far.
on the front page you said you need writers, i can't write sexy stuff but interactions are something i can try. But i'd need a list with the characters, location if applicable, and how the girl reacts if applicable, and any other factors you want me to add. I am not an amazing writer but i am a writer. oh and the girls relationship with the pc changes how they react right? give me a number and explanation of the relationship if you can. ALSO i really want an updated alpha or even beta to be released to the point that i started reading python scripting books. they might as well be written in egyptian. :'( I appreciate that you guys are actively developing this though. :)
Irl you need more managers if you have a lot of workers or multiple departments. So if bonuses provided by managers will be limited by the number of affected characters or occupation (manager for cleaners, manager for guards, etc), they will be more needed in the game. I don't propose the latter one as subclasses, there will be one manager class, and you will be able to set her to one of occupations.
- every building could maintain a limited amount of establishments. It has nothing to do with the number of rooms or upgrades. For example, in the cheapest, smallest building there will be
enough for 1 establishments. An establishment is stuff like brothel, bar, stripclub, etc.
- we could use real time building like Alkion used to have (dunno if it still has it), where you build rooms like, well, in Dungeon Keeper if you ever played it, by clicking on squares of the building map. I kinda liked that option, even though it should be coded much better than it was coded in Alkion.
- living rooms must be used by slaves if you have any, and could be used by homeless or poor free chars if you allow them. In the latter case they will rest much better than at home, and will have some disposition bonuses.
How do you imagine building structure?
Did some english homework on the xeona dialogues. Also i think i need the testing rpy you mentioned where can i find that (cause the glitches were unruly due to none specified variables). also called her leona alot in my change log.
Also some of my notes in the changelog may have been writers bias, so if my changes don't match the ideal tone of the game let me know. And don't let my suggestions and comments offend you :P
Did some english homework on the xeona dialogues.
Also i think i need the testing rpy you mentioned where can i find that (cause the glitches were unruly due to none specified variables).
Building ==> Upgrade ==> Sub-Upgrade.What about amount of rooms? Atm rooms are kinda independent, even though both rooms and other stuff like upgrades mostly use the same space, ie building.
What about amount of rooms? Atm rooms are kinda independent, even though both rooms and other stuff like upgrades mostly use the same space, ie building.
Matrons could:
- rewrite customers preferences with a certain probability to available ones.
- disable negative customers traits with a certain probability, like aggressive.
- increase the amount of money customers are ready to spend (they don't bring ALL their money when they go to your establishment).
- reduce the impact of displeased customers on reputation.
- reduce disposition level needed to set characters to "wrong" jobs.
- provide actual micromanagement, ie set characters to autorest when needed and return back to the job after they rest.
I suppose player will have to pick one of these options per manager.
Damn, even old upgrades icons are in a worse shape than I thought. Some major editing and resizing will be needed if we'll use them.
The event in the outside of arena where you meet the girl with the cannon, which rpy is that in so i can work on the grammar and stuff?library/events/events - kathtom_duo.rpy
Also signed up for github, still don't know what to do with it. ;D
library/events/events - kathtom_duo.rpy
I'm a bit surprised it's still working :D I just need to correct the portrait it uses to fit the frame...
Doesn't it mean that animation in VN mode suffers too?
New tech...
Well, all conflicts should be resolved locally. Without a software capable to do so it probably will be impossible to upload changes in some cases.
Actually, based on the text I feel like you can only ADD a file, not change something in an EXISTING one.
I mean cases (rare in our case, but they still happened several times) when the repo cannot determine which line is more preferable. It usually happens when two coders have edited the same file at the same time, and you have to run a special tool in these cases to merge files properly.
In the worst case the oldest one will replace everything.
I am not quite sure what happens in case of conflicts though...
Building, in addition to hygiene and popularity, has beauty stat. That's what characters increase when they do stuff like decorating.
Supervising seems a good option for managers though.
temp = int(renpy.input("You proposed to help her with money. You have [hero.gold] G.", allow="1234567890"))worked before but stopped now.
Hm. There were a few errors in money code related to wrong position of deleting variables which didn't existed, I fixed it. But that weird error remained.
Hm. There were a few errors in money code related to wrong position of deleting variables which didn't existed, I fixed it. But that weird error remained.
As iv said i was busy with work and this was my first opportunity to check up on things here and i like how interactions works now.. well as long as you correct a few things that is..
GM - proposition.rpy ( line 316 ) "Hire her as [char.occupation].": ( to ) "Hire her as [char.occupations].": ( else your can hire anyone from interaction ) ( you cant ignore and skip the error )
traits_class.json ( line 122 ) "id": "Stright Prostitute", ( to )"id": "Straight Prostitute", ( else you cant get her job description without errors ) ( you can ignore and skip the error )
custom_screens.rpy ( line 229 ) xysize (140, 10000) ( ermm no wonder with that number lol.. i just add # for now it will remove empty spaces ) and looks like some of the max shows as empty
( looks like its from stats or skills that are been worked on ) like the +con not showing up in mage mantle stats
Also theres a error you cant skip when you want to give her money.. didnt had the time to check where that comes from.
Those are errors preventing seeing what was added even if some things are disabled/reworked atm..
is took almost six hours to get working again and was originally coded by out GFX Artist who is wizard in Photoshop but is a poor Ren'Py coder. The whole thing should be working now. Transfer screen is still an issue but you did not mention that.
Where do we determine pictures shown in character profile and during interactions?
I only found it for GMs.
frame:or maybe this
background Frame("content/gfx/frame/MC_bg.png", 10, 10)
# basestring assumes that image is coming from cache, so it simply a path.
if isinstance(gm.img, basestring):
add ProportionalScale(gm.img, gm.img_size[0], gm.img_size[1])
else:
add gm.img
if gm.show_menu:Either way, they both don't support exclude argument that I want to add.
use location_actions("girl_meets", gm.char, pos=(1180, 315), anchor=(1.0, 0.5), style="main_screen_3")
As for interactions (not GMs), it's probably this part:or maybe thisEither way, they both don't support exclude argument that I want to add.
action If(not_escaped, true=[Hide("char_profile"), With(dissolve), Function(gm.start_int_or_tr, char)], false=NullAction())
def start_int_or_tr(self, girl, **kwargs):But when I try to add more arguments to Function(gm.start_int_or_tr, char), it says there could be only 2 arguments.
"""
Starts either the interaction or training scenario based on whether the girl is in a training/schooling location or not.
girl = The girl to use.
kwargs = Arguments to pass to the start_int or start_tr function.
"""
if in_training_location(girl):
self.start_tr(girl, **kwargs)
else:
self.start_int(girl, **kwargs)
use rg_lightbutton(img=entry.show("girlmeets", "swimsuit", "beach", exclude=["urban", "wildness", "suburb", "nature", "winter", "night"], type="reduce", label_cache=True, resize=(300, 400)), return_value=['jump', entry])I've yet to find such a clear string for interactions. Everything there is a wrapper around something else, like you said once about Jakes BE :)
You see, all GMs have a string that clearly declarates what it does, ie sets images:I've yet to find such a clear string for interactions.
Everything there is a wrapper around something else, like you said once about Jakes BE :)
This is where we start interactions, I found it after all.
Start_int_or_tr supports kwargs
But when I try to add more arguments to Function(gm.start_int_or_tr, char), it says there could be only 2 arguments.
Function(gm.start_int_or_tr, char, img=char.show(*tags, exclude=[*more_tags], resize=gm.img_size))
Function(gm.start_int_or_tr, char, img=img)
I presume renpy can remove background of any color, not just black?
The difference in animation quality is amazing.
I could convert other spells if you provide me a guide.
Eh. So it's useless for png filmstrips, and we have like 90% of animations as filmstrips without a source gif -_-
No idea. I've seen at least two of the sites I've used to offer spritesheet to gif conversion. I don't really know of there is any software that converts spritesheets to webm directly... there might be.That's not the problem. When I converted a gif built from one of our spritesheets with transparent bg to webm, bg became white. So we have to know for sure if any bg is suitable.
That's not the problem. When I converted a gif built from one of our spritesheets with transparent bg to webm, bg became white. So we have to know for sure if any bg is suitable.
Alright, I tried to convert basic air spell to webm. I have no idea how set webms properly, so I just used your layout for cataclysm. I'm not sure if it looks better, but it definitely looks differently somehow. More transparent perhaps.
Perhaps this is the result of all manipulations with third party soft (build gif from sheet, change transparency to black color, convert to webm). You should take a look.
Hair update..
(http://s20.postimg.org/xulx6my61/Tied11.jpg) (http://postimg.org/image/xulx6my61/)
I still need to pose the hair a little more but this should be ok..
Now i need to check all the rendering templates i have and check if they are all in working order then ill render a pack.
Ooops forgot to enlarge the nose lol still looks okYeap, looks great.
Alright, I made a proper mask video by converting alpha channel to grayscale mask. And remade the base video without making alpha channel black (thus the online converter made it white, can't be helped).
It still looks somewhat different.
Can we control the speed of playing webms?
Hmm all i need to do is to make the face/eyes more visible to avoid that weird effect that the eyes are too separate i guess..
Yeap. They look somewhat blank in some pics. BJ pic is perfectly fine though.
Hmm lots of work again in RL could you tell me whats needed for a pack ( the minimum as action/clothing/expression ) that way ill focus on those first and make 1Besides sex scenes, profile pictures with various emotions, backgrounds and clothes are needed.
What do you mean by that.. too much lighting ? or the fact that we see too much empty space ?
That's a shame, many video players have the function of changing playing speed.
For some spells I used algorithms like playing animation from beginning to end and then from end to beginning. If renpy doesn't support this either, more complex gifs will be needed for such cases.
On some pics eyes have this "blank" look, as if she's thinking about something else.
Is it possible somehow to use multiple values for a flag? I mean something like char.set_flag("gm_stripped_today", value1=day, value2=amount).
Have you looked into how difficult it may be to render part of the images separately (like hair for example)?
so in short
What does this mean in terms of additional time/effort?
So to resume so far i have..They look awesome :)
I think I did something similar before in the code, but forgot where and how... How can I access the global day value that we use as the number of ingame days inside a python function without passing it from renpy?
Also I will still fix grammar and stuff when i have time. :)Btw most grammar errors get caught by notepad+ spellchecker plugin. I'm more concerned about how natural lines sound, as a non native speaker.
It would be nice if she smiled a little bit :)
As for your pack, you could try to work with emotions. Stuff like shy or ecstatic very often implies blushing, so it might require another texture for faces, I suppose?
def ec(d):
# Not used atm.
"""
Expects a dict of k/v pairs as argument. If key is a valid trait, the function will check if character has it.
Else, the key will be evaluated and value added to the choices.
This will return a single random choice from all that return true (traits and evals).
"""
What's this for?
def d(value):Anyway, I tend to use complex checks like if dice(char.disposition*0.5), so it's probably not needed.
"""
Checks if disposition of the girl is any higher that value.
"""
return char.disposition >= value
Alright, now the fun part...
I'm not sure how well it will look, but I want it to be displayed inside the portrait frame, at the same time with the portrait. Should I just use correct coordinates
or there is a way to tie it to that specific element of gui?
Oh, I have an unexpected problem. Portraits are above the animation. While it looks pretty good, some portraits overlap it entirely, so animation should be above the portrait.
onlayer screens
...
Surprisingly, it always hides itself when we return to the interactions menu even if I don't do it (except when I used onlayer screens), so I figured I might as well skip it this time. Probably has something to do with the interaction screen structure.
Zooming of some kind is a must have for hugs anyway.
Then we need tooltips for interactions options to make clear what they do. Some of them are not intuitive for non devs :)
transform interactions_angry_pulse_tr:But it requires current_emotion variable which might as well be passed as an argument, and besides I'd like to include this stuff into override_portrait function, where animations can help to replace some missing pics. Meaning it should be a python function, not a renpy call. But I have no idea how to show animations there, especially with additional parameters like xpos.
xanchor 0.5 yanchor 0.5
block:
linear 0.05 zoom 1.1
linear 0.05 zoom 0.9
pause 0.2
linear 0.05 zoom 1.1
linear 0.05 zoom 0.9
pause 0.8
repeat
transform interactions_sweat_drop_tr:
xalign 1.0 yalign 0.5 alpha 0.0
linear 1.0 yalign 0.0 alpha 1.0
transform interactions_scared_lines_tr:
alpha 0.0
linear 1.0 alpha 1.0
python:
interactions_angry_pulse = im.Image("content/gfx/animations/interactions/angry.png")
interactions_angry_pulse = At(interactions_angry_pulse, interactions_angry_pulse_tr)
renpy.image("interactions_angry_pulse", interactions_angry_pulse)
interactions_sweat_drop = im.Image("content/gfx/animations/interactions/uncertain.png")
interactions_sweat_drop = At(interactions_sweat_drop, interactions_sweat_drop_tr)
renpy.image("interactions_sweat_drop", interactions_sweat_drop)
interactions_scared_lines = im.Image("content/gfx/animations/interactions/scared.png")
interactions_scared_lines = At(interactions_scared_lines, interactions_scared_lines_tr)
renpy.image("interactions_scared_lines", interactions_scared_lines)
image interactions_hearts_flow:
anchor (0.5, 0.5)
"content/gfx/animations/interactions/hearts/heart1.png"
pause 0.1
...
repeat
label interactions_show_anim_emotion:
if current_emotion == "angry":
show interactions_angry_pulse onlayer overlay:
xpos 180
ypos 596
elif current_emotion == "sweat":
show interactions_sweat_drop onlayer overlay:
xpos 180
ypos 596
elif current_emotion == "scared":
show interactions_scared_lines onlayer overlay:
xanchor 0.5
yanchor 0
xpos 218
ypos 577
elif current_emotion == "love":
show interactions_hearts_flow onlayer overlay:
xanchor 0.5
yanchor 0.5
xpos 220
ypos 637
return
Buttons are too small for long names.
Same for sex, we don't just jump there, we ask the character. But if I change it to propose to have sex or something, it will be too long for sure, and the button will become huge.
You could use "proposition" for the sex button. It essentially means propose to have sex but with not so nice undertones (you would proposition someone you thought was a slut, not your girlfriend).Well, I will use it for whores characters then :)
and you should have passed current mood as an argument to the label but we can flip it to a function as well, no problem...They are multipurpose. Like, angry animation can be successfully used with indifferent to show displeasure that is too small to be angry. Or with angry portrait to show very strong anger.
Those animations would have to be hidden I think, unless you want to automate them to be a part of the say window, we don't know for how long we want to show hearts animation (for example).Well, when I tested the hearts animation, it lasted until we hide a line. I mean, I have to call it before every line if I want it to last longer. Like:
I read about issues with calls a bit at the renpy forum, and I had an impression that too many calls will result in overflowing calls stack. So you say I can call a label, inside it call another label, and as long as they all end with return there won't be a problem?
They are multipurpose. Like, angry animation can be successfully used with indifferent to show displeasure that is too small to be angry. Or with angry portrait to show very strong anger.
Well, when I tested the hearts animation, it lasted until we hide a line. I mean, I have to call it before every line if I want it to last longer. Like:
call hearts
char.say "ayy"
<animation disappears here after we click left mouse button to show the next line>
call hearts
char.say "lmao"
Probably because the engine hides its screen layer after every line.
Huh. (https://github.com/Krot2bic/PyTFall)
Items_building_resources.json? Is there something I do not know? :)
$ interactions_portraits_overlay.change("default)
$ interactions_portraits_overlay.change("love")
$ interactions_portraits_overlay.change("sweat", "reset")
The next step is probably zooming portraits a bit. Quick and short zooms will be useful for things like grabbing breast, and long and slow ones for hugs.
Curious, repo now shows language details. In our case renpy is 97.3% and python is the rest...
Is it difficult to add tooltips to interaction buttons? Or you simply don't like the idea?
File "game/library/interactions/pyt - screens - interactions.rpy", line 29, in script
with dissolve
File "game/library/screens/classes - screen_actions.rpy", line 347, in get_sensitive
return self.menu not in pytfall.world_actions.nest
TypeError: argument of type 'NoneType' is not iterable
Looks like the three testing options in intimacy menu that do stuff but don't output any lines give an error now after your last screen update.
Is there a list of special characters that use a different font? Or on the contrary, anything but normal, common characters uses a different font?
Although it's not a priority atm.
I increased the x size of interactions buttons to use longer names there more freely. Initially I wanted to try reducing text size a bit, but didn't found anything like that in pyt-screens-interactions rpy :)
Yes interaction gets better and better but something is missing.. you can improve disposition and need to reach a certain number to be able for some ask/result to be working or get a better chance for it to work.. this is the ( normal good approach.. )
What about ( and probably repeat myself ) the Evil type one.. like corrupting the character using blackmail or some other corruption method ( just played with HHS+ and liked their blackmail/hypnosis/drugs method lol ) well would have to ask to a investigator like character to find the dirt on that person if any to get the blackmail working or train that hypnosis skill like that would reduce disposition if it fails ( so at some point if you fail too much the target will really hate you thats where the blackmail would be even more useful as if she has it you could make her accept against her will or if not just balance her disposition with the ( normal good interaction ) so it does not fall too far
I think corruption/blackmail would be really great for unique girls as it would feel better to make that girl yours more than in just 1 way ( when ever she likes you because you do/say good things or be able to exploit the dirt she has / control her hypnotizing her making her likes you more ( dispo up ) or some other things ) for strong personality girls evil option seems more right to me lol as for now i find it a little boring to max any girl dispo then nothing left to do..
Just imagine if at start we do not know the girl personality ( witch sound right by me as youv just met her ) you could reveal it talking to her or know about it asking other who know about her or with a investigator like npc type.. finding it out should helps you know the interaction that would work better on her ( better chance of it working as thats what archetypes are for ) and for the evil aproach finding it out could also give better options to corrupt her..
...
hero.exp += randint(2, 4)
adjust_exp(hero, randint(2, 4))
hero.adjust_exp(randint(2, 4))
I noticed in your last push that you do this:I know. I don't think that interactions should be a reliable way to level up during the whole game. At least basic ones. Maybe advanced ones like sex or dating should be scaled.Code: [Select]hero.exp += randint(2, 4)
It is almost meaningless at higher levels, so better:
If you preparing for the next release, maybe it's time to fix #107?
Except the latter one doesn't jump anywhere like it should. Even though it ends with renpy.jump("girl_interactions").
def interactions_check_for_minor_bad_stuff(char_name): # we check minor issues when character might refuse to do something based on diceNow it should give a tired line from interactions_refused_because_tired and stop the interaction. Instead it gives tired line, then returns to the place where I called the function, and the interactions continues as if she had enough vitality. I mean any interaction where interactions_check_for_minor_bad_stuff(char_name) is used.
if (not("Pessimist" in char_name.traits) and char_name.joy <= 25) or (("Pessimist" in char_name.traits) and char_name.joy < 10):
if dice(hero.charisma-char.character) and dice(80):
narrator(choice(["Looks like she is in a bad mood, however you managed to cheer her up."]))
char_name.disposition += 1
char_name.joy += randint(3, 6)
else:
narrator(choice(["Looks like she is in a bad mood today and not does not want to do anything."]))
renpy.jump ("girl_interactions")
elif char_name.effects["Down with Cold"]['active']: #if she's ill, there is a chance that she will disagree to chat
if dice(hero.charisma-char.character) and dice(80):
narrator(choice(["Looks like she is not feeling well today, however you managed to cheer her up a bit."]))
char_name.disposition += 2
char_name.joy += randint(1, 5)
else:
narrator(choice(["She is not feeling well today and not in the mood to do anything."]))
renpy.jump ("girl_interactions")
elif char_name.vitality < 40 and dice (100):
renpy.call ("interactions_refused_because_tired")
char_name.disposition -= randint(0, 1)
char_name.vitality -= randint(1, 2)
renpy.jump("girl_interactions")
Btw text replacement doesn't work with characters lines (I dunno if it should already). ♪ characters are not shown.
renpy.call ("interactions_refused_because_tired")
Btw text replacement doesn't work with characters lines (I dunno if it should already). ♪ characters are not shown.
Yeah, looks like calls are bad for python after all.
I think there is a latency in the arena minigame between click and stop...
For minigame I'd prefered something like, let's say, picking 3 cards from 9 or more upturned cards. Some of them give hp, some mp, some nothing. Gives a lot of freedom for various bonuses too.
In my version I use incompatible with the current game rchars data files. They try to use our races icons like unique characters do, but fail and give CTD every time I go to any random girl screen. Iirc you use older versions of data files, where random chars use unknown race type by default and don't give CTDs.
So I'm interested in fixing #107 more than you :D
"id": "2k_tan",And then at some point we give them base races, ie
"desc": "Semi androids, semi digital creatures created by a mad scientist a long time ago with unknown purpose.",
"race": "Digital Android"
"random_traits": [That leads to
...
["Android", 100],
...
],
File "game/library/screens/character_profile.rpy", line 9, in scriptIf I remove "race": "Digital Android", everything works.
with dissolve
File "game/library/screens/character_profile.rpy", line 141, in execute
screen char_profile():
File "game/library/screens/character_profile.rpy", line 141, in execute
screen char_profile():
File "game/library/screens/character_profile.rpy", line 155, in execute
if girls:
File "game/library/screens/character_profile.rpy", line 220, in execute
frame:
File "game/library/screens/character_profile.rpy", line 226, in execute
has vbox
File "game/library/screens/character_profile.rpy", line 346, in execute
vbox:
File "game/library/screens/character_profile.rpy", line 349, in execute
if stats_display == "main":
File "game/library/screens/character_profile.rpy", line 393, in execute
fixed:
File "game/library/screens/character_profile.rpy", line 407, in execute
$ img = ProportionalScale(trait.icon, 100, 100)
File "game/library/screens/character_profile.rpy", line 407, in <module>
$ img = ProportionalScale(trait.icon, 100, 100)
AttributeError: 'unicode' object has no attribute 'icon'
I don't understand how to rotate picture not around the center. I'd like to show wiggling, ie rotate back and forth around center bottom of the picture.
transform rotate_around():
subpixel True
around (200, 200)
angle 260
radius 100
linear 2 clockwise circles .5 rotate 180
angle 90
linear 2 counterclockwise circles .5 rotate 0
repeat
That code moves along the parabola -_-
Looks like yzoom has the same problem. It zooms with anchor 0.5, 0 no matter what.
transform rotate_around1():
subpixel True
around (200, 200)
angle 0
radius 50
rotate 0
linear 2 clockwise angle 90 rotate 90
repeat
block:
linear 1 yzoom 1.1 anchor (0.5, 1)
pause 0.1
linear 1 yzoom 0.9 anchor (0.5, 1)
repeat
Portraits animations are a very promising way to enliven all types of lines and replace missing portraits. Too bad default renpy animation functions don't support half of their methods...
What about yzoom and anchors?
The top edge remains in place while the bottom goes up and down thanks to repeat. While I need the bottom edge to remain in place and the top one to move up and down.
Again, this sh*t ignores anchors, I tried them everywhere I could, even inside linear itself :-[
transform newzoom():
pos (200, 150)
yanchor 1.0
block:
linear 1 yzoom 1.1
pause 0.1
linear 1 yzoom 0.9
repeat
Rchar files start withAnd then at some point we give them base races, ieThat leads to If I remove "race": "Digital Android", everything works.
Meanwhile uchars use race line too, and work flawlessly.
Which are what? I doubt that there is something that cannot be done in Ren'Py on UDD level but that usually requires a lot of effort. But there is always a possibility that animation can be done the easy way as well, but it is not always immediately apparent.I mean xaround and yaround, mentioned by PyTom himself (!). They are supposed to be an easy way to rotate stuff around any point, but nope, they do nothing.
I got it (probably), my mistake was in using clumsy circles statement while angle should have been usedIt's not entirely reliable. Given enough time, rotation desynchronizes for some pictures, and the image begins to move in circles with gradually increasing radius.
I mean xaround and yaround, mentioned by PyTom himself (!). They are supposed to be an easy way to rotate stuff around any point, but nope, they do nothing.
around
type: (position, position)
default: (0.0, 0.0)
If not None, specifies the polar coordinate center, relative to the upper-left of the containing area. Setting the center using this allows for circular motion in position mode.
It's not entirely reliable. Given enough time, rotation desynchronizes for some pictures, and the image begins to move in circles with gradually increasing radius.
It's probably easier to find or make another animation than do it via renpy...
You can freely delete yanchor 1.0 and it will do just the same. That's the problem, all animations seem to ignore manual anchors and use only default ones. While I need non default ones :)Code: [Select]transform newzoom():
pos (200, 150)
yanchor 1.0
block:
linear 1 yzoom 1.1
pause 0.1
linear 1 yzoom 0.9
repeat
This just works for me..
You can freely delete yanchor 1.0 and it will do just the same. That's the problem, all animations seem to ignore manual anchors and use only default ones. While I need non default ones :)
Does anyone consult the good, old Doc?Like ever...
I was about to write the above, but when going for the link, noticed that it's not mentioned there :(
Can I close #107? Or are there still issues?It also assumes that random chars should have all fields that uchars have. Like level ::)
The irony :DDoes anyone consult the good, old Doc?Like ever...
transform interactions_surprised_tr:That's my code. I'm looking at the moving bottom atm.
"exclamation_mark"
pos (130, 546)
alpha 0.6
yanchor 1.0
block:
linear 1 yzoom 1.1
pause 0.1
linear 1 yzoom 0.9
repeat
It also assumes that random chars should have all fields that uchars have. Like level ::)
That's my code. I'm looking at the moving bottom atm.
I figured rchars will have randint levels, like uchars have a fixed level.
Well, they should have levels when you meet them in GMs. If you want to tie them to MC level, they will become much better than uchars at higher levels.
If you want those animations to be perfect, they would have to be handled on per case basis, just like zoom_out/zoom_in of the portraits.I'm afraid you have to give me an example of how to pass a transformed picture with custom anchor to your overlay function. You already have seen my transform function, it's nothing special.
1) I know that this was mentioned before, the idea is for ingame chars to gain experience as the game is progressing, not as much as they could have if well managed but still.Yet uchars have different initial levels AND gain experience as the game is progressing.
2) This still doesn't explain why one rchar should have higher levels than any other.You tell me. Why uchars have them? Why high level rchars at arena have them?
3) They will have levels when you meet them no matter what you do.And atm those levels == 1. See issue 152.
Yet uchars have different initial levels AND gain experience as the game is progressing.
You tell me. Why uchars have them? Why high level rchars at arena have them?
And atm those levels == 1. See issue 152.
I'm talking about starting levels for characters that are not needed as high level fighters at the arena and other places.
==>
I am asking what you want those levels to do? To have a locked range on rchar generation is not an option, I need very high levels chars for Arena to work properly, maybe for some other part of the game as well. If you want to lock levels for chars that you can meet for interaction, I don't understand how you see the same static system working @ MC lvl 1 and MC lvl 100. It will be very difficult to find a low level rchar to hire at the beginning and almost impossible to find one that you don't have to train for 100 days @ MC lvl 100.
I'm afraid you have to give me an example of how to pass a transformed picture with custom anchor to your overlay function. You already have seen my transform function, it's nothing special.
if isinstance(side_image, Char):
if side_image.say_screen_portrait_overlay_mode == "zoom_fast":
add At(side_image.say_screen_portrait, interactions_zoom(.2)) pos 219, 639 anchor .5, .5
elif side_image.say_screen_portrait_overlay_mode == "zoom_slow":
add At(side_image.say_screen_portrait, interactions_zoom(.8)) pos 219, 639 anchor .5, .5
else:
add side_image.say_screen_portrait pos 219, 639 anchor .5, .5
You do it in two steps, search for this code in screens.rpy:Code: [Select]if isinstance(side_image, Char):
if side_image.say_screen_portrait_overlay_mode == "zoom_fast":
add At(side_image.say_screen_portrait, interactions_zoom(.2)) pos 219, 639 anchor .5, .5
elif side_image.say_screen_portrait_overlay_mode == "zoom_slow":
add At(side_image.say_screen_portrait, interactions_zoom(.8)) pos 219, 639 anchor .5, .5
else:
add side_image.say_screen_portrait pos 219, 639 anchor .5, .5
And add a new elif option to the fork, name the animation as you see fit.
Next:
UNIQUE_SAY_SCREEN_PORTRAIT_OVERLAYS = ["zoom_fast", "zoom_slow"]
on Char's namespace and add the condition string there and you're done.
Note: You need to pull my last push, I flipped that list to be a constant which it is.
add side_image.say_screen_portrait pos([color=green]add proper coords...[/color])
add [color=green]your_animation[/color]
If we assume (we do atm according to rchars descriptions :) ) that humans are local city girls, elves are from wild forests or remote non human cities and slimes are monsters from the wild areas, they all have different possibilities for training.
Although one thing I never thought about is different classes, I usually looked at it from the viewpoint of warriors, when for rchars Human<Elf<Slime. But for other classes it will be different, for maids probably Slime<Human=Elf...
I mean, Slimes warriors normally should have more fights than Humans, thus more exp and higher starting level. While Humans maid should be hired more often than Slimes maids. So I suppose it should be randint tied to classes, not just randint :D
"gold": 200,But rchars don't atm. I'm not even sure if they are supported since I never tried to use them.
...
"skills": {
"dancing": 10,
"exploration": 15
Hmm. What about gold and skills? Uchars have this stuffBut rchars don't atm. I'm not even sure if they are supported since I never tried to use them.
"color", "what_color"
"arena_willing" fields? Not random, of course.
I added "full_race": "Digital Android" to rchar, and now I see race in her profile.
Then I added "full_race": "Human" to uchar, and I don't see her race in profile.
Too early to close the issue, it doesn't count as solved when a field works for rchars but not uchars :D
File "game/library/interactions/pyt - screens - interactions.rpy", line 72, in script
python:
File "game/library/interactions/pyt - screens - interactions.rpy", line 133, in <module>
for k,c in schools[TrainingDungeon.NAME].all_courses.iteritems():
KeyError: 'Training Dungeon'
I'm afraid my push is the only one for the last 30 minutes -_-
image snow = Snow("content/gfx/animations/interactions/note.png", xborder=(160,277), yborder=(580,700))Was it removed from the engine or something?
File "game/library/interactions/GM - kiss.rpy", line 9, in <module>
image snow = Snow("content/gfx/animations/interactions/note.png", xborder=(160,277), yborder=(580,700))
NameError: name 'Snow' is not defined
Ohhkey, I tried image snow = Snow("content/gfx/animations/interactions/note.png", xborder=(160,277), yborder=(580,700)) to check how borders work, but got Was it removed from the engine or something?
# Image definitions for snow particles:
image snow_small = Transform("snow.png", zoom=0.5)
image snow_normal = "snow.png"
image snow_large = Transform("snow.png", zoom=1.5)
image snow_very_large = Transform("snow.png", zoom=6.0, alpha=0.7, additive=0.7)
# Definition for SnowBlossom2 particles by Nyaatrap (or at least used in his cool dress-up demo):
image snow = Fixed(
SnowBlossom2("snow_large", 50, xspeed=(20, 50), yspeed=(100, 200), start=100, fluttering=10),
SnowBlossom2("snow_normal", 75, xspeed=(15, 35), yspeed=(75, 150), start=100, fluttering=7),
SnowBlossom2("snow_small", 100, xspeed=(10, 25), yspeed=(50, 100), start=100, fluttering=5))
# Definition for Snowing UDD:
image snowing = Fixed(
Snowing("snow_small", interval=(0.1, 0.15), speed=(5.5, 7.5), slow_start=(7, (0.2, 0.3))),
Snowing("snow_normal", interval=(0.15, 0.25), speed=(3.5, 4.5), slow_start=(7, (0.4, 0.5))),
Snowing("snow_large", interval=(0.25, 0.35), speed=(2.5, 3.5), slow_start=(5, (0.5, 0.6))),
Snowing("snow_very_large", interval=(2, 5), speed=(0.4, 0.8), slow_start=(20, (4, 6))))
to check how borders work,
-start_pos: x, y starting positions. This expects a tuple of two elements containing either a tuple or an int each.
-end_pos: x, y end positions. Same rule as above but in addition a dict can be used, in such a case:
*empty dict will result in straight movement
*a dict containing an "offset" key will offset the ending position by the value. Expects an int or a tuple of two ints. Default is (100, 200) and attempts to simulate a slight wind to the right (east).
The very first hearts portrait animation is bit too jumpy at some frames. Adding alpha channel made it look a bit better, but another options are either edit it manually or make our own with the help of particles...
I need to check if the UDD position handing can be improved further.
I'm afraid you have to give me an example of how to pass a transformed picture with custom anchor to your overlay function. You already have seen my transform function, it's nothing special.
I'm gonna update chars data files soon, and I wonder how should the game handle uchars with no level in data file, such cases are definitely possible. Making them lvl 1 is too simple, perhaps they should be autoleveled in the same way as rchars.
This is very difficult to do with random, the only way is to create a number of choice branches...
(God damn it, I edited your post instead of quoting again :( )
==>
I'll try to do the Cleaning Job tonight...
https://github.com/XelaPy/PyTFall/issues/160 (https://github.com/XelaPy/PyTFall/issues/160)
File "I:\RenPy\renpy\execution.py", line 408, in runPerhaps it's better to postpone it until the next release.
node.execute()
File "I:\RenPy\renpy\ast.py", line 806, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "I:\RenPy\renpy\python.py", line 1461, in py_exec_bytecode
exec bytecode in globals, locals
File "game/library/interactions/GM - sex.rpy", line 625, in <module>
$ char2 = random.sample(willing_partners, 1)[0]
File "/home/tom/ab/x64lucid-deps/install/lib/python2.7/random.py", line 323, in sample
ValueError: sample larger than population
The lesbian scene is broken though. Perhaps it's better to postpone it until the next release.
$ char.set_flag("_day_countdown_interactions_blowoff", 3)
File "game/library/screens/locations/cemetery.rpy", line 25, in script call
$ gm.start_gm(result[1])
File "game/library/interactions/GM - greetings.rpy", line 861, in script
$ renpy.show_screen(exit)
File "game/library/interactions/GM - greetings.rpy", line 861, in <module>
$ renpy.show_screen(exit)
Exception: Screen graveyard_town is not known.
File "game/library/interactions/pyt - screens - interactions.rpy", line 42, in scripteven before the kiss.
show expression gm.bg_cache
Exception: Image 'bg tavern_town' not found.
Something is clearly broken now :-\
Besides, the flag doesn't have any effect on interactions with hired one, I don't think it's a right thing to do, unless they are slaves.
I wonder if there should be limited GMs with unsold slaves at the market or some other close location. Behind prison bars png maybe.
Well, I don't want to render unique scenes for every single character myself. More rendering - > less developing.
Universal scenes, tied to different body sizes without visible heads and maybe with different skin tones will be quite useful though.
if it's sensible to allow
We already have protection against giving the same gift over and over.
4) Maybe adding webm to your tagger and making sure it doesn't crash on a preview and maybe adding new "animated" tag.I looked into it. Either I write a small videoplayer based on directshow and included into the tagger to show any kind of animated files and videos as long as pc knows how to do it. Or simply open the file in its default program, ie there should be for example kmplayer or potplayer on pc (they both know how to show webms, maybe some other players can too), and webm files should be associated with it.
Yeah, it's a good idea to block/hide the button. Let's go with two gifts per day, with the second one giving only a half of its bonus to disposition, unless the bonus is negative ie the gift is bad.
Another good idea is to make a "back" button in the gifts menu in case if you changed your mind (or misclicked :) ).
For the purpose of balance we need to decide how many days should be required to go from 0 to 1000 disposition, providing that MC focuses on one character.
Ok, let's say lover status would require 1000 disposition. 1000/[130-150] = [6.5-7.5] per day, without any additional events, only via normal GMs. It's a very low number compared to the current system, when even a simple chat gives randint(1,4).
I'm not against it, but it means that either disposition should be noninteger and for example chat will give from 0.2 to 0.5, or max disposition should be more than 1000. Because otherwise there is no way to make simple options like chat balanced.
You can always do something like if dice(25) and award 1 point.No, people will avoid such ineffective options, since it's a total waste of AP with 75% chance. Unless it will be the only available option, but it won't be.
Can't you disable equip button for wrong genders instead of showing the message about it?
Err, I recall we had a cafe at some point, but I cannot find it anymore.
Black is alpha 0 for webms, isn't it? It should be VERY easy to make a grayscale mask for animations with black background, it's already invisible there. Even simpler than my experiment with that air spell.
This starts both movies playing, and uses the red channel of the mask movie as the alpha channel of the other movie. The result is an animated sprite that can have far more frames than would be possible with ATL, Animation, or other methods that have to load all images into ram at once.
If we grayscale a sprite with a black background, we most likely get ready to use alpha mask sprite, and then use them in webm. Unless the whole picture is too dark.
Give me an animation, I'll try it.
Here
I dunno why you insisted on using monocolors instead of old good grayscale. I just used that ice animation together with this attachment as an alpha mask, and it looked awesome.
Hm. I think it can be achieved by manually adjusting brightness and contrast for the alpha mask. But it's a tedious work.
Can't be helped, in the game they use custom settings for every single frame (yeah, not even an algorithm).
That ice sword actually a part of big animations set for both swords and axes with multiple elements, so it's probably better to leave it for warriors skills or something if had plans to use it as an ice spell.
And stats that don't change at all are red too, except health. Why? It makes no sense.
Weird, I don't recall touching that code.Looks like weird things happen from time to time. A month ago I had an instant CTD without usual renpy logs after starting a new game once I enabled previously disabled sound via that button in the top menu. Cannot reproduce it too, it just happened. Perhaps it's because we use prerelease version?
Hmm.. been searching all this time but never found decent profile with angry/smiling/happy could you fetch me some image samples of those ?I'll take a look.
We still need writers, graphics and game designers so if you want to dedicate some of your time into development of this project, feel free to post here or PM me!
Well, if you are good with drawing, we could use interface improvements here and there.
If not, you could create items, that only requires basic English and imagination, we have tons of excellent items icons.
Im not good with art but creating items? why not if that can helpFor a start follow these (http://www.pinkpetal.org/index.php?topic=1291.msg38629#msg38629) instructions to obtain the dev version.
Hmm.. been searching all this time but never found decent profile with angry/smiling/happy could you fetch me some image samples of those ?Here we go. (https://www.dropbox.com/s/0mfgu82v27328fb/emotions.rar?dl=0)
Xela, we are out of space in db thanks to marple resources. Consider cleaning your shared folder a bit, maybe removing clearly inferior animations.
If not, you could create items, that only requires basic English and imagination, we have tons of excellent items icons.
I removed my folder, don't they give you extra space if you pay them for at least an year?Yeap, but we collected too much resources :)
I don't want to add any more item filters (clutter in interface)... maybe the "building resources" could simple be added to unique items filter...Yes, I suppose we could use it for all directly unusable items.
Yes, I suppose we could use it for all directly unusable items.
We should automate the creation of spells scrolls. They share the same icon per element, the same name "[spell name] scroll", the same description except for spell name again, the same location (Exploration).
Creating scrolls manually for every new spell/skill is unwise. Price and chance plainly could be based on spell effect value or something, or could be set somewhere else.
Transfer screen should be a lot better now, I'll fix the rest of the code after refactoring. Also advances cleaning job a bit but it's not yet ready.But I don't see all characters in the building at the transfer screen. The set of characters there is a bit different every time I restart the game, but I never see all of them.
Creating scrolls manually for every new spell/skill is unwise. Price and chance plainly could be based on spell effect value or something, or could be set somewhere else.
If we implement all animations, we'll have like 1000 spells/arts roughly. I'm not going to create 1000 scrolls manually no matter what.
While loading <'ProportionalScale' <'Image' u'D:\\Pytfall\\RenPy\\PyTFall/game\\content/schools/Group/Thumbs.db'> 175 175 True>:I thought you already resolved the issue with Thumbs.
File "game/library/screens/training.rpy", line 27, in script
with dissolve
File "game/library/UDDs.rpy", line 219, in load
child = im.cache.get(self.image)
error: Unsupported image format
Schools are broken somehow.I thought you already resolved the issue with Thumbs.
Schools are broken somehow.I thought you already resolved the issue with Thumbs.
if file.endswith((".png", ".jpg")):Doesn't it mean that the game will ignore *.jpeg? I have none in my packs, but we cannot guarantee there won't be any in other packs or among our backgrounds.
images.append("schools/%s/%s"%(p, file))
Doesn't it mean that the game will ignore *.jpeg? I have none in my packs, but we cannot guarantee there won't be any in other packs or among our backgrounds.
Ok, I finished with maple. Try to drop maple gifs to db again, I have a bit more space now.
if os.path.isdir("/".join([dir, packfolder, folder])):Gifs? They are not supported, aren't they?
# We set the path to the character so we know where to draw images from:
setattr(char, "_path_to_imgfolder", "/".join(["content/{}".format(path), packfolder, folder]))
# We load the new tags!:
for fn in os.listdir("/".join([dir, packfolder, folder])):
if fn.endswith((".jpg", ".png", ".gif")):
Kinda, it required central alignment. You can freely move separate frames with mouse to manually set any kind of alignment, and probably more, I don't know about all options yet. And of course CC has its own effects that may help to make better animations, after all it was made to create animations not only from sprites sheets.
I don't think we have a better option than using grayscaled animation as alpha. I suppose a pro artist could make a perfect alpha webm manually, but that's an overkill.
We don't need it anyway, we're making movies, not flash animations so for us it's either AE or Premiere.Actually, for some reason swfs made by CC cannot be converted to webms, there is an error of some kind. But it also can make .mov videos from sprite sheets, and they can be converted :)
AE makes a movie from png files with 3 clicks of a button and a perfect mask (I mean it, perfect one) with another 5 clicks.Uh, what about alignment? Can it be freely adjusted for every frame?
Well (http://www.videoschoolonline.com/what-is-the-difference-between-adobe-premiere-pro-and-adobe-after-effects-and-why-i-use-both/), they say After Effects is better for 2D animations, although professionals probably use both.
I mean, at very least completely disabling sound, like in that online converter, may be useful for reducing size of webm.
I figured out basics. Timeline is weird compared to CC. Mask kinda works like you described, with red taken from alpha. Alignment works too, as long as I implement it for all frames at once (works weird for selected ones).
and it completely ignores my attempts to ProportionalScale it. Wtf?
Never had such issues with Proportional in VN mode.
At the MC profile screen frames stats like charisma have 1 pixel between them, but at the mobs screen they don't have it and as a result visually merge into one big frame. I don't understand how to fix it.
It appears that the game treats mobs without elemental traits as creatures without elements at all. In truth however they should be neutral, as if they had the Neutral trait. Even if I fix it inside the bestiary gui, that still would be a problem inside BE, so a more general fix is needed, when the game just loads mobs from the json.
Aside from sorting mobs by min_level, there are few things unfinished at the beast screen. First, in the second stats column for some reason numbers ignore xalign 0.98, unlike the first column. No idea why.
Second, the whole part from description to spells should be scrollable (with one general scrollbar), otherwise there won't be enough space on the screen. I know there is viewport for that, but can't make it work.
Is there a way to tie width of a frame to width (in pixels) of a text? To make the frame size dependable on the text length.
The good news: beast screen is finished.
The bad news: the new button that is supposed to return you to the previous screen suddenly stopped working, even though it used to at some point, and I changed nothing about it ::)
Also, I still hope for advanced elements icons algorithm that uses circle sectors instead of circle slices. I bet it would looked much better.
I reduced description font a bit. Atm all info is visible at the screen without the need to scroll it, but scrolling is still there in case if some mob will have too many spells or something.
# Basetraits:How does it work? Can it handle cases when the character has 2 base traits?
vbox:
xsize 315
xfill True
fixed:
xysize (300, 70)
yfill True
for trait in sorted(list(char.traits.basetraits)):
$ temp = (0.7, 0.9) if sorted(list(char.traits.basetraits)).index(trait) else (0.3, 0.1)
textbutton "[trait]" action NullAction() hovered tt.action(trait.desc) align temp
How does it work? Can it handle cases when the character has 2 base traits?
Also, there are other options like dissolving one element into another or adding movement from left to right.We should try dissolving with some cool circular mask.
Trait icon + status (resting/active/learning (we color the tiny round))There is also another status that we show nowhere atm, friendship and lover stuff. Again, a dissolving with a circular mask probably will look cool there.
frame:And when MPTrait icon expands, it also expands the background frame background (tautology :) ), ruining the interface. Even though there should be plenty of space for it anyway. How to force background to not expand?
align (.0, .0)
xysize (330, 126)
background Frame(Transform("content/gfx/frame/base_frame.png", alpha=0.98), 330, 126)
hbox:
ysize 110
$ trait = char.personality
$ img = ProportionalScale("".join(["content/gfx/interface/images/personality/", trait.id.lower(), ".png"]), 120, 120)
imagebutton:
align (.0, .0)
at pers_effect()
xcenter 54
ycenter 59
idle img
hover img
hovered tt.Action("{=library_book_header_main}{color=}{size=17}%s{/=}{/color}{/size}"%trait.id + "\n" + trait.desc)
action NullAction()
Can any element of interface have a tooltip? Or it's limited to buttons?
Omg, that pesky MPTraits animation. I made it likeAnd when MPTrait icon expands, it also expands the background frame background (tautology :) ), ruining the interface. Even though there should be plenty of space for it anyway. How to force background to not expand?
frame:This code draws the whole big left panel background at the character screen. I don't understand what 10,10 do there. Nothing changes when I change them.
background Frame(Transform("content/gfx/frame/p_frame5.png", alpha=0.98), 10, 10)
xysize (330, 780)
xanchor 0.01
ypos 30
I tried to add maximum (330, 126) to the frame, nothing changed, while it's supposed to limit its size.
This code draws the whole big left panel background at the character screen. I don't understand what 10,10 do there. Nothing changes when I change them.
Just did my first push today, if you want to take a look.
Also it would prolly look a lot cooler if the circle was transparent and we drew the animation behind it, but we can always to that later.I'm not sure yet what will be the best. I planned to make the animation work, figure out the best values for animation zoom and time, and then test it with different frames to find out.
There will be a series of quests based on Naruto there as well.Eh, most quests are kinda meh, I'm going to remake them. There is a difference between an idea and actual ingame events. Something that looks good on paper or in imagination is not so good at the screen.
Of course we need more finished systems to make proper quests, like SE, which effectively allows to search for hidden or lost characters and items outside of VN mode with minimum coding.
I'm afraid due to lack of a detailed concept I dunno what SE will be capable of.
Ehh, we probably shouldn't show gender field for gifts, materials and loot. It's not just useless, it looks weird to have a unisex glass :D
Yeah, I was wondering why we do that instead of setting coordinates when (just now) created map icons for the village. Although pngs are optimized, so they almost don't take space.
I suppose if guards are going to prevent problems, not just attack aggressive customers, they could use a new, security skill to notice problems before they arise.
And don't forget there should be a place for events during all jobs (something I loved in wm ex). It's when a character gets an arbitrary buff or debuff for the whole turn based on dice, job, stats and traits. For instance, I recall how ALBoobs had a chance to prevent effective guarding there due to limited mobility and increased noticeability.
Today, when I tried to find a newly added item in inventory, I had a thought that maybe items in any inventory should be sorted by name. But perhaps customizeable sorting is better, it won't take too much space in gui anyway if done correctly. By name, by price, by amount, by gender. Btw we used to have gender filter, I don't see it anymore.
Curious, I cannot make a screenshot of the presplash, it's like it is not even there. No matter the system.
Yeah, too bad I need to find a cured-of-greed version for a start.
Yeah, too bad I need to find a cured-of-greed version for a start.
elif item.type == "food" and item.sex == 'unisex':
label "{size=-3}N/A" xalign 1.0 align (1.0, 0.5)
I added that to your N/A code to avoid unisex cakes as much as possible, but the game ignores it.
Ah, it works inside shops, but not inside inventory. I suppose inventory doesn't have an access to type maybe?
filter = self.FILTERS[index]
items = store.items
if filter == 'all':
if self.male_filter:
self.items = list(items[item] for item in self.content.iterkeys() if items[item].sex != "female")
elif last_label in ("char_equip", "items_transfer") or self.female_filter:
self.items = list(items[item] for item in self.content.iterkeys() if items[item].sex != "male" and items[item].slot in self.FILTERS)
else:
self.items = list(items[item] for item in self.content.iterkeys())
else:
if self.male_filter:
self.items = list(items[item] for item in self.content.iterkeys() if items[item].slot == filter and items[item].sex != 'female')
elif last_label in ("char_equip", "items_transfer") or self.female_filter:
self.items = list(items[item] for item in self.content.iterkeys() if items[item].slot == filter and items[item].sex != 'male')
else:
self.items = list(items[item] for item in self.content.iterkeys() if items[item].slot == filter)
- should MC be able to act inside SE or not; in terms of normal gameplay it probably means straightly skipping all those days he's inside, since the player acts via MC, and maybe replacing these days by something that Old Huntsman made in his first game about traveling in fogs.
- should we limit the max number of teams acting inside SE at the same time or not; what if too many teams will slow it down?
- can multiple teams be sent to one location? If so, then simpy probably should handle their occasional meetings too.
Hm, we don't actually have to skip multiple days, we can just lock off all options like talking to characters, entering MC inventory, going to the city, etc. So player can see what's going on in his absence, but not act.
We don't have to allow it to MC, it's as simple as saying that human y chromosome cannot exist in areas where SE taking place :)
But if it's simple enough, why not.
I mean, if we'll have only have female characters in parties eventually, we might as well take another step and say that males actually cannot survive in SE areas due to genetic issues and close the issue once and for all with the help of the lore :)
Of course we also can introduce short (for 1 day) explorations not far from the city, where MC can be without any additional coding, for the price of all AP probably.
Yeah, that's why I proposed to allow MC be a part of short explorations only, to make sure no events will be missed. When we take MC out of the city, we risk to break events tied to him without additional coding.
Although, we can do it in another way: for example a copy (like Naruto-like clone or simply remotely controlled body of some kind) of MC created by magic or something participates in SE while he stays at home with half of AP, HP, MP, etc.
Some events already tied to days in quests. Like, after N days after a scene something happens after the next turn screen. We need a more centralized system then for checking any time related events which can skip the days when MC is not in the city to guarantee the lack of errors.
It's coded by Thewlis. To be honest, I understand less than half of his quests system because it works too differently from the languages I worked with, but some things are clear enough to me.
One of them is the ability to run an arbitrary label on ANY screen as long as you know screen name (sounds like a backdoor vulnerability :D ).
I never said during the next day screen, I said after. You just put in his system the name of screen, and once the player moves to that screen, a label will be called. City map, brothel screen, MC screen, any location, anything. Meaning his system watches where the player jumps, I suppose.
It might work during the next day screen, but I never tried something like that.
Ok, let's say we have an event called after ND at day >=3. Then we run a second event at day >= 6, and it is a continuation of the first event.
Now, if player was inside SE for a week and returned at the 7th day, the events still will work, but one right after another, without a pause which is supposed to be there according to the concept.
even if you returned from ND to main screen on day 3, it is not guaranteed that your event will be executed if some event with higher priority is scheduled and that even may ruin it for you as well (by for example forcing next day to occur).Indeed. Thus I have no idea how to guarantee independent advancement of quests when you need, let's say, update the quests log or show a scene three days after some scene. I use main screen because the game doesn't provide any alternatives.
Another example is your Naruto Quest, if you're planning to use SE for that no matter what, it'll be impossible to complete for anyone who just wants to do the brothel sim thing (unless you add other options).Yeah, and in Skyrim you can't complete the Crown of Barenziah, which is related to thieves quest lines, without joining the mages guild :)
So even that is already about compromises.
Yeah, and in Skyrim you can't complete the Crown of Barenziah, which is related to thieves quest lines, without joining the mages guild :)
By reliability here I mean not time but space :)
Main screen looks like a placeholder because it still has tons of free space that could be used to show or control something instead of showing the same image in high resolution. So I'm not even sure if we'll continue to return there after ND screen.
Also, in cases when we need to just update the quest log (and thus advance quest because some time passed) and nothing else, nothing prevents us from doing so inside ND screen at some special tab.
We don't really have an option to form and send multiple teams to multiple locations outside the guild, it has to be unique in its own way :)
I can see the building screen, it matches your description. Now define "business".
Also, like I said, define business. I mean ingame concept, if we have a bar and a srtipclub in the same building, they count as two or one business?
Besides, I don't understand how girls_list screen will work for multiple buildings. Atm we just see all characters. I suppose it might be useful too, but I figured buildings should show only characters inside them, or it becomes hard to imagine who's where.
init python:The idea is to ask player if he wants to be engaged in event/quest, and allow to return later if he doesn't want to. The first event has no max_runs, and nothing happens if you answer No, so in theory you can answer No and return later. But for some reason it doesn't work like that.
q = register_quest("Drunk Lady")
register_event("drunk_lady1", quest="Drunk Lady", locations=["tavern_inside"], dice=100)
label drunk_lady1(event):
hero.say "Huh?"
menu:
"Yes":
$ pytfall.world_quests.get(event.quest).next_in_label("Test.", "piece1")
$ pytfall.world_events.kill_event("drunk_lady1")
$ register_event_in_label("drunk_lady2", quest=event.quest, locations=["tavern_inside"], dice=100, max_runs=2, restore_priority=1)
"No":
"'K"
return
File "game/library/screens/locations/tavern_inside.rpy", line 82, in scriptWhen I use look around option. No idea why.
$ result = ui.interact()
File "game/library/screens/locations/tavern_inside.rpy", line 82, in <module>
$ result = ui.interact()
File "renpy/common/00action_other.rpy", line 443, in __call__
rv = self.callable(*self.args, **self.kwargs)
File "game/library/events/classes - events.rpy", line 82, in run_events
if event.check_conditions():
File "game/library/events/classes - events.rpy", line 246, in check_conditions
elif self.run_conditions and all(list(bool(eval(c)) for c in self.run_conditions)): return True
File "game/library/events/classes - events.rpy", line 246, in <genexpr>
elif self.run_conditions and all(list(bool(eval(c)) for c in self.run_conditions)): return True
TypeError: eval() arg 1 must be a string or code object
I recall you coded long time ago temporary buttons or something like that to be used for events. Not inside interactions.
I suspect it was before we moved the repo, don't see anything like that in commits.
$ register_event_in_label("drunk_lady3", quest=event.quest, locations=["tavern_inside"], dice=100, restore_priority=0)
$ pytfall.world_events.force_event("drunk_lady3")
$ pytfall.world_events.force_run("drunk_lady3")
I wonder if it's possible somehow to run the next event in the chain right after finishing previous event, without doing anything...
I mean something likeCode: [Select]$ register_event_in_label("drunk_lady3", quest=event.quest, locations=["tavern_inside"], dice=100, restore_priority=0)
$ pytfall.world_events.force_event("drunk_lady3")
$ pytfall.world_events.force_run("drunk_lady3")
Basically, I have two events chains (#1 and #2) that lead to the very same event scene (#3). So my options are:
- insert #3 code into both #1 and #2 by copypasting the same code. Will work flawlessly, but will be messy in terms of code.
- add a new location where #3 will run by itself. Will work, but it will be weird that you have to go to some location manually to continue the event.
- force #3 run after either #1 or #2 (they are independent) will be finished, or at least jump to some label right after either one will be finished. Not sure if possible.
V2 face update ( body diffuse on hair need fixing and some other minor adjustments ) but finaly got cheeks/jaw close to the base anime i wanted.. next step would be to lower the bottom of the eyes/top of nose/cheeks/ears to get the larger eyes type
Making clothing next..
Your previously sprites were just fine! Stop trying to improve upon greatness and just make the damn pack :D
Yeah, you right. I didn't thought about calling a label inside an event before finishing it :D
label test_ev_label_1(event):
"Exit and reenter the location..."
return
label test_ev_label_2(event):
"Exit and reenter the location."
$ register_event_in_label("test_ev_label_3", trigger_type="auto", locations=["city_parkgates"], priority=1, dice=100, max_runs=1)
$ pytfall.world_events.force_event("test_ev_label_3") # This one adds the event to the cache before the next day..
return
label test_ev_label_3(event):
"All Done!"
return
label meet_beggar_event(event):
$ beggar = Character('Beggar', color="#c8ffc8", show_two_window=True)
'You see a girl who comes close to you.'
show npc beggar_girl_novel
with dissolve
$ beggar(choice(['Hello, mister! Please, could you spare some coin for hungry beggar?',
'Hello, mister! Please, could you spare some coin?',
'Hi! Could you buy me something?',
'Please, could you spare some coin for hungry beggar?']))
menu:
'WTF? Who are you?':
python:
random_place = choice([u'library', u'tailor store', u'cafe', u'world peace', u'my sweet home'])
for steal_amount in [5000, 500, 100, 50, 25, 5]:
if hero.take_money(steal_amount, reason="Theft"):
break
beggar 'Oh, I`m just searching my way to [random_place]! I guess it`s there? Thank you, have a nice day!'
"Somehow your pockets feel a bit lighter..."
'Go buy some food. (-5 gold)':
if hero.take_money(5, reason="Charity"):
show npc beggar_girl_smile_novel
with dissolve
beggar 'Thanks! ^_^'
else:
beggar 'Empty pockets? Too bad. :`('
'NO!':
$ beggar(choice(["You're a meanie! >:-(",
"That's too bad...",
"And you looked so promising..."]))
hide npc
with dissolve
return
label simple_beach_event(event):
python:
n = Character(" ")
img = get_random_event_image("simple_beach")
renpy.show("event", what=img, at_list=[center])
renpy.with_statement(dissolve)
n(choice(["This looks like fun!", "Damn, don't you wish could join them...", "Fun on the beach :)", "Awesome!", "... speachless", "Cute!"]))
return
label creatures_beach_event(event):
python:
n = Character(" ")
img = get_random_event_image("creatures_beach")
renpy.show("event", what=img, at_list=[center])
renpy.with_statement(dissolve)
n(choice(["This looks like fun!", "Monster Girls are the best?", "What the hell?", "What are they called???"]))
return
label found_money_event(event):
python:
amount = randint(10, 100) + hero.level*2 + max(10, hero.luck*4)
renpy.show("_tag", what=Text("%d"%amount, style="back_serpent", color=gold, size=40, bold=True), at_list=[found_cash(150, 600, 4)])
hero.say(choice(["Yey! Some money!", "Free Gold, lucky!", "I will not let this go to waste!"]))
hero.add_money(amount, "Events")
return
label found_item_event(event):
python:
# amount = max(200, (randint(10, 100) + hero.level*2 + max(10, hero.luck*4)))
items_pool = list(item for item in items.values() if "Look around" in item.locations)
found_item = choice(items_pool)
renpy.show("_tag", what=ProportionalScale(found_item.icon, 100, 100), at_list=[found_cash(150, 600, 4)])
hero.say(choice(["Yey! Found something! ([found_item.id])", "[found_item.id] Might be useful!", "[found_item.id]! Lucky?", "-[found_item.id]- Never look a gift horse in the mouth :)"]))
hero.inventory.append(found_item)
return
jump next_day # (yeah, it is that simple :D)
show expression t.show("00AA-sx-eb-c8-l4-ns-p3-s5-sj-p2.jpg", resize=(800, 600)) as x at truecenter with dissolvethen use our function to imitate dizziness at the background
$ double_vision_on("bg girl_room_4")The moment I do it the first picture disappears. It shouldn't. Suggestions? :)
$ double_vision_on("bg girl_room_4", clear_scene=False)
$ t_spr = chars["Tsunade"].get_vnsprite()I suddenly got
show t_spr at center with dissolve
File "game/library/events/StoryI/naruto_quests.rpy", line 101, in script
show t_spr at center with dissolve
Exception: Image 't_spr' not found.
show chars["Tsunade"].get_vnsprite() at center with dissolveand got
File "game/library/events/StoryI/naruto_quests.rpy", line 101, in scriptThe hell? It worked dozens times before :D
show chars["Tsunade"].get_vnsprite() at center with dissolve
KeyError: u'"Tsunade"'
show image_tag
Shows an image that was defined as a part of Ren'Py internal image tracking system. Unless it was declared as such, it should not have worked.show expression displayable
was what you were supposed to be using...
Let's see.. Can we freely change slave/free status in the code? It won't cause any issues? For instance we have two characters and two ways to finish an event. Depending on the way, one of them will be free and another one will be slave.
$ register_event_in_label("drunk_lady2", quest="Drunk Lady", locations=["tavern_inside"], restore_priority=0, run_conditions=["hero.gold >= 1000"], jump=True)This one somehow works with any amount of gold.
$ pytfall.world_events.force_event("drunk_lady2")
dice = chance to execute (check dice function), use run_conditions otherwise
dice has priority over run_conditions
What's custom event trigger?
What's custom_condition?
What's simple_conditions, especially since we kinda have (and use) run_conditions for "simple" conditions?
Anything that's not auto or look around I guess...Yeah, I was hoping for a simple example how it even should be used :)
Long story short, you can add some conditions there to make sure that an event doesn't make it to cache until they are true.Is it useless if we force the event into the cache? Or even force_event will check for simple_conditions first?
Yeah, I was hoping for a simple example how it even should be used :)
Same for custom_condition.
$ pytfall.world_events.run_events("auto")
$ pytfall.world_events.run_events("hidden_village_auto")
class MyOwnEventClass(WorldEvent):
def __init__(self, *args, **kwargs):
super(MyOwnEventClass, self).__init__(*args, **kwargs)
# bla bla bla...
def custom_conditions(self):
# bla bla bla... if True, I'll be accepted to the cache.
Is it useless if we force the event into the cache? Or even force_event will check for simple_conditions first?
def run_events(self, trigger_type, default=None, cost=0)Could it be possible to change the cost of event activation? Seems like atm it's the same everywhere, even though this function assumes we have control over it.
if hero.AP < cost:To make an event always available the cost could be negative, but it will also restore AP :)
renpy.show_screen("message_screen", "Not enough AP left")
return
else:
hero.AP -= cost
I see...
Could it be possible to change the cost of event activation? Seems like atm it's the same everywhere, even though this function assumes we have control over it.
Hm. And code prevents us from making free events either.To make an event always available the cost could be negative, but it will also restore AP :)
if trigger_type != "auto":
if hero.AP < cost:
renpy.show_screen("message_screen", "Not enough AP left")
return
else:
hero.AP -= cost
for event in l:
if event.check_conditions():
event.run_event()
return
else:
if default: renpy.call_in_new_context(default)
return
else:
for event in l:
if event.check_conditions():
event.run_event()
return
if hero.AP < cost:
renpy.show_screen("message_screen", "Not enough AP left")
return
else:
hero.AP -= cost
for event in l:
if event.check_conditions():
event.run_event()
return
else:
if default: renpy.call_in_new_context(default)
return
def next_day(self):doesn't think they are valid for some reason :-[
"""Fails quests that have no valid events.
"""
garbage = list()
# Find incomplete quests with no existing events
for i in self.active:
for j in pytfall.world_events.events_cache:
if j.quest == i.name:
break
else:
if not i.manual: garbage.append(i)
while len(garbage) > 0:
devlog.warning("Garbage Quest found! \"%s\" was failed."%garbage[0].name)
self.fail_quest(garbage.pop())
And I need to know how to fail quests via lines.
$ pytfall.world_quests.get("Frog Princess!").finish_in_label("You've rejected the Frog Princess Quest! It's further fate is unknown.")
$ pytfall.world_events.kill_event("show_frog")
def fail_quest(self, quest):
"""
Fails a quest.
"""
$ pytfall.world_quests.fail_quest("Frog Princess!")
I had this issue since I tried to make my first events for the village a few months ago. Back then I solved it by adding manual=True to quests, it prevents autodeleting in any case. But it's not really a solution, it's a workaround. We have to figure out how to use the garbage clearing system properly, or rewrite it if it cannot work properly.
locations=["all"], start_day=day + 2, trigger_type="auto"But it should start it in any location at the day+2 day. What kind of condition it might need? Condition="True"?
Hm?But it should start it in any location at the day+2 day. What kind of condition might need?
manual True is the solution, not a workaround. Quest system has it's own progression mechanism which Thewlis explained on the forum somewhere I believe.Yeah, and I have to figure out how to use the quest system without manual True. It's reserved for cases when it's impossible to make things work via normal ways, I doubt our quests are that complex.
1) No conditions and you've defaulted dice to 0... meaning that the event may never run.Better than 50 though, now I immediately see issues with missing dice and can fix it, before I had only 50% chance to do it :D
2) You've registered them in a label using a function that only worked in labels. That means they were never added to the event manager at all.I don't get this one. How could it possibly matter where I register an event as long as I do it before quitting the scene, and why such a major limitation even exists?
Any quest that doesn't have any events that belong to them waiting in the event manager will be automatically failed.
I didn't know that... it's odd that frog thing doesn't fail half way then, I'll take a look at it later.
Really? I'm sure you're the one that asked me to put that in...So you created the concept of failing out of nowhere quests that haunts me all this time. Thanks, Xela -_-
Yeah, and I have to figure out how to use the quest system without manual True. It's reserved for cases when it's impossible to make things work via normal ways, I doubt our quests are that complex.
Better than 50 though, now I immediately see issues with missing dice and can fix it, before I had only 50% chance to do it :D
I don't get this one. How could it possibly matter where I register an event as long as I do it before quitting the scene, and why such a major limitation even exists?
Created a new issue about quests popups.
Oh, wait.So you created the concept of failing out of nowhere quests that haunts me all this time. Thanks, Xela -_-
Come to think of it... Why events use separated dice which also has a priority over conditions thus making them useless, if you can include dice into conditions, and they even will work together?
def __init__(self, name, label=None, priority=100, restore_priority=5, dice=0, start_day=1, end_day=9999999, jump=False, screen=False,10 000 000 is a huge number, but wouldn't be easier to make it None by default and don't check at all in the default case? (also making events work forever if someone is willing to play so many turns)
times_per_days=(), locations=list(), trigger_type="look_around", custom_condition=False, simple_conditions=None, run_conditions=None, stop_music=False, max_runs=0,
quest=None)
10 000 000 is a huge number, but wouldn't be easier to make it None by default and don't check at all in the default case?
Since packs, characters or pictures can be removed from the game, events related to them may also be broken...
Either we check everywhere if characters and pictures exist, or do not support removing stuff.
We can say a few packs are mandatory, but not everything.
There should be a way to add events and locations together with packs. Like, well, mods for bethesda games.
I suspect complex events are problematic.
Let's say we wish to make DOA pack optional. Its event is called from the village screen, but ok, let's say the village is mandatory, and naruto pack too.
It's called via matrix. So we need to add another matrix area which should not exist without the pack.
Even for you events, lets say someone hates Ino and deletes her from the pack, are you adding 1000 conditions and check to account for a possibility that an image or a character was deleted? Or do you write a function that will check if all chars/images are still present in the game before every single stage of every single one of your events is executed? I sure as fuck hope that you don't :DYup, unlike wm we cannot support seamless deleting of any character.
What's register_quest_in_label for? I don't see it to be used anywhere yet.
When I register an event, I'd like to randomly pick a location from a list. I tried locations=[random.choice('main_street', 'city_park')], didn't worked.
Can we find out during event where exactly it was started, in which location?
While loading <'ProportionalScale' <'Image' u'content/events/simple_beach/Thumbs.db'> 1280 720 True>:
File "game/library/events/base.rpy", line 57, in script
python:
File "game/library/events/base.rpy", line 61, in <module>
renpy.with_statement(dissolve)
File "game/library/UDDs.rpy", line 219, in load
surf = im.cache.get(self.image)
error: Unsupported image format
Lighting wrath doesn't have animation. It's your spell, I dunno what kind of animation it should use.
File "game/script.rpy", line 108, in scriptMeaning you remove somewhere four last symbols while jpeg requires 5 ::)
python:
File "D:\Pytfall\RenPy\renpy\ast.py", line 806, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "D:\Pytfall\RenPy\renpy\python.py", line 1577, in py_exec_bytecode
exec bytecode in globals, locals
File "game/script.rpy", line 114, in <module>
chars = load_characters("chars", Char)
File "game/library/functions - loading_data.rpy", line 215, in load_characters
raise Exception("Unknown image tag: %s, path: %s" % (tag, rp_path))
Exception: Unknown image tag: pb., path: content/chars/Attack_on_Titan/Mikasa_Ackerman/0000-nn-e2-c1-c9-l2-pr-pb.jpeg
Can, but not simply when we talking about dozens thousands of pictures.
Huh. I don't see any mentioning of squelching stuff, and the comments are not self-explanatory.
I took that kind of structure when we update quest right before destroying event from the frog quest, except we use jump there all the time, that's why it works.
The idol mini quest, however, might have issues with new popups judging be the code.
$ pytfall.world_quests.get("Two Sisters").fail("Sadly, you missed you chance to meet her.")and fail quest with failing notification and a failing note in the log.
I'm not sure how to indicate quest failing because of the garbage clearing system. I mean, I know how to show the popup, but have no idea what to do with the quest log in such cases.
I can look into that if you like.Wouldn't hurt.
elif location == "park" or location == "forest":The game here ignores included when I try to gm.set_img("stripping", included, exclude=excladed, type="reduce"). How to make it work?
excladed.extend(["indoors"])
if location == "forest":
included = ("nature", "wildness")
else:
included = ("nature", "urban")
if char.has_image("stripping", "nature", exclude=excladed):
gm.set_img("stripping", included, exclude=excladed, type="reduce")
No, when the game kills the quest by itself because can't find valid events, it probably still should show a popup (atm it doesn't, if I'm not mistaken). So I wonder if we should write something in the log quest in such cases.
Wouldn't hurt.
def next_day(self):
"""Fails quests that have no valid events.
"""
garbage = list()
# Find incomplete quests with no existing events
for i in self.active:
for j in pytfall.world_events.events_cache:
if j.quest == i.name:
break
else:
if not i.manual: garbage.append(i)
while garbage:
devlog.warning("Garbage Quest found! \"%s\" was failed."%garbage[-1].name)
self.fail_quest(garbage.pop())
I have a problem with data types...The game here ignores included when I try to gm.set_img("stripping", included, exclude=excladed, type="reduce"). How to make it work?
elif location in ["forest", "park"]:
excladed.extend(["indoors"])
if location == "forest":
included = ("nature", "wildness")
else:
included = ("nature", "urban")
if char.has_image("stripping", "nature", exclude=excladed):
gm.set_img("stripping", *included, exclude=excladed, type="reduce")
I believe it is meant to be used only with quests in auto mode, like the idol quests but even then, only if the newly registered events are cached on the very next day and happen without delay.Yeah, I'm not even sure if we need that thing.
If I ever done it before, it's because I used parts of your code as examples, not because I knew what that * does :)
Yeah, I'm not even sure if we need that thing.
Yeah... it doesn't do much harm either, maybe we should just make all quests manual my default? It will be much more intuitive that way (since we'd be using manual the most).Yeah, my thoughts exactly.
** unpacks a dict btw, bloody useful sometimes and I could have sworn that you improved on my own code in whore job removing the unnecessary bloat by using unpacking predefined values instead of typing everything all the time. That's why I was surprised that you've asked about it.Shows how well I can operate blocks of your own code to improve your own code in other places without even understanding everything inside them :D
Yeah, my thoughts exactly.
if location == "beach":It shows completely wrong pictures. But if I replace *included with "beach" again, it works. Why?
excluded.extend(["indoors"])
included = ("beach")
if char.has_image("stripping", "beach", exclude=excluded):
gm.set_img("stripping", *included, exclude=excluded)
elif char.has_image("nude", "beach", exclude=excluded):
gm.set_img("nude", *included, exclude=excluded)
elif char.has_image("lingerie", "beach", exclude=excluded):
gm.set_img("lingerie", *included, exclude=excluded))
>>> ("Meow")
'Meow'
>>> ("Meow", )
('Meow',)
>>> ("meow" + " Meow!") * 2
'meow Meow!meow Meow!'
>>> "Meow" * 2
'MeowMeow'
>>> ("Meow") * 2
'MeowMeow'
>>> ("Meow", ) * 2
('Meow', 'Meow')
>>>
include = ["tag"]
list("tag") # or tuple("tag")
We might make them more generic in the future but I can't really tell how atm.Your function, get_sex_img_4int, already does it. But genericness does not allow the same level of customization as labels and functions that I use for interactions.
That's why I think it should be a separate module, cut from anything else. We still show map and locations backgrounds, but in fact it's just the same pictures inside another system. Otherwise I'm afraid things will be messy when date events will collide with usual ones.
As for MC team... I assume usually circumstances require to act alone, unless it's an official battle at arena or inside SE.
Eh, that's a sensitive subject. From the viewpoint of logic, a ninja might follow MC everywhere, but not a warrior in heavy armor. A slime might become liquid and unnoticeable, but an angel with wings and halo will draw attention.
Hm. I think teammates should be unavailable for any jobs, including rest. I mean, they are almost always with MC, they don't have time to work in some specific building or sleep the whole day.
Oh. So if MC has more AP than teammates, at some point they will be unable to fight while being in his team?
Damn, Gismo's interface doesn't answer the whole load of questions and lacks a lot of much needed controls. Guess we'll have to get a little bit creative after all :D
tags = (["simple bg", "masturbation"], ["no bg", "masturbation"])excluded tags
excluded.extend(["forced", "normalsex", "group", "bdsm", "after sex"])And a function
def get_simple_act(char, tags, excluded):So I should run it like
acts = list()
for t in tags:
if char.has_image(tuple(t), exclude=excluded):
acts.append(t)
if acts:
act = choice(acts)
else:
act = None
return actt
else:In reality however it gives result none, even for cases when there is clearly a simple bg+mast pictures exist.
tags = (["simple bg", "masturbation"], ["no bg", "masturbation"])
result = get_simple_act(char, tags, excluded)
if result:
gm.set_img(result, exclude=excluded)
for t in tags:
if char.has_image(*t, exclude=excluded):
if result:
gm.set_img(*result, exclude=excluded)
Btw if you want to show mobs elements like Gismo did, they will be too small to understand multielemental ones with that kind of zooming, unless you will make them dissolve one to another instead of combining circle parts.
I think stars are supposed to represent difficulty of the area. But it would be hard to judge when we have many areas, so we can use them for explored % too of course.
If you wish to show items slots, you could use sorting icons that we use in inventories instead of the full slot name.
Considering the amount of rape pictures, they will need their own function. Which inspects if the character has them and in which locations, and then returns the best possible option + tells the game about picked location to make sure texts are suitable.
I think I'll try to use small, simple functions inside the big function to avoid repeating the same code.
if location in ["beach", "park", "forest", "room"]:Normally such things are handled by a single jump. Another option is to make <show simple bg picture> a function.
<many checks>
else: # all checks failed
<show simple bg picture>
else:
<show simple bg picture>
I'm not sure I can imagine how to properly use drag and drop there. It's different for items screens, they have a big list of unique and sortable, thus recognizable items icons. Characters portraits are much less sortable and recognizable. And dragging big pieces of gui with portrait+name+class is weird.
I'm not sure I can imagine how to properly use drag and drop there. It's different for items screens, they have a big list of unique and sortable, thus recognizable items icons. Characters portraits are much less sortable and recognizable. And dragging big pieces of gui with portrait+name+class is weird.
The tooltip at the right panel does its job, but looks bad. It's the only (properly interfaced) place in the game where we use a simple black background for text.
Bestiary button should be either moved to the guild, or be at the both arena and guild screens if you want to keep it at arena. Or maybe even moved to MC screen. Anyway, leaving it only at arena, a third party building, makes little sense.
I suppose there should be access to characters profiles if you need full info about the character. I'm not how to combine it with draggable portraits though.
Pictures that you use atm inside the guild look good, but take quite a lot of space. Maybe they should be smaller, or even cut off a bit.
As a side note, does it take additional efforts to use more than one mouse button in renpy?
No, I don't mean d&d. We already have rmb for returning to previous screen, so the only thing that left is middle button, which is not suitable for d&d.
Here (https://www.dropbox.com/s/i1em393t0xlknnm/circle_portrait.png?dl=0) is separate portrait, here (https://www.dropbox.com/s/zljctnn45w4044g/circle_portrait_1.png?dl=0) is frame for 3 chars. If you can use them, I'll clean them a bit more.
I actually think about using them at the team personal screen, not in the general gui where we have all teams and characters. It's log button in the current gui, you have 3 portraits down there without any frames.
Small frame (https://www.dropbox.com/s/cktnwwwb2oep8g3/small_port.png?dl=0), health (https://www.dropbox.com/s/s5s4cu97klvxipv/green_bar.png?dl=0) bar, mp (https://www.dropbox.com/s/102f4mum0nbpsna/blue_bar.png?dl=0) bar, empty (https://www.dropbox.com/s/jnqm5poalh5sehy/empty_bar.png?dl=0) bars. Not sure how well they will look in the game, but they look pretty good in the source. Transparent (https://www.dropbox.com/s/lwiinv1z00wxgxv/small_port_empty.png?dl=0) version, background (https://www.dropbox.com/s/p7qwo82c7loijob/bk.png?dl=0) for it.
DB previewer doesn't support alpha channel, showing it as white.
I can't find the place where you calculate character AP.
I wonder, maybe it should be based on the character level... After all stats maxes, including constitution which gives AP atm, are limited by level anyway.
If not, then agility should affect it too. Speed is just as important as constitution for performing many actions.
Speaking of which, in many games stuff like health and mp are derivatives of other stats. Such as constitution and intelligence in our case. We can calculate them instead of keeping independent.
Perhaps APs should only be used outside jobs then. There are always other ways to limit jobs if the character was too active in VN mode. Vitality is one of them. A flag that forbids the character to work during the next turn is another one, if something major happened.
Is there a reason to do so? :)
$ tags = ({"tags": ["beach", "swimsuit"], "exclude": ["sex", "sleeping", "angry", "in pain", "sad", "scared", "bathing"]}, {"tags": ["simple bg", "swimsuit"], "exclude": ["sex", "sleeping", "angry", "in pain", "sad", "scared", "bathing"]}, {"tags": ["no bg", "swimsuit"], "exclude": ["sex", "sleeping", "angry", "in pain", "sad", "scared", "bathing"]})to send it into a function, isn't there a way to make it work like
excluded = ["sex", "sleeping", "angry", "in pain", "sad", "scared", "bathing"]and
$ tags = ({"tags": ["beach", "swimsuit"], "exclude": excluded}, {"tags": ["simple bg", "swimsuit"], "exclude": excluded}, {"tags": ["no bg", "swimsuit"], "exclude": excluded})
Not sure what to show at that pergament part of the frame with circles. I think it's too small for the team name anyway. Perhaps some team statistics... I'll remove the pergament part if it will be useless.
I asked about screens on lemma to find out if my attempt at improvement is sound and how best to do it, I'd like a response before updating any major screensYour question might be a bit too advanced to expect an answer other than "try and find out" :D
Your question might be a bit too advanced to expect an answer other than "try and find out" :D
I move some parts of interactions logic to python functions, global ones. Can it create issues? Maybe it's better, for example, include them into the char class?
If I do weighted random choice with skills values as weights (and they all can and will go beyond 100), will it still work? Or they have to be normalized?
elements = ['one', 'two', 'three']As you can see, weights are 100% in total.
weights = [0.2, 0.3, 0.5]
from numpy.random import choice
print choice(elements, p=weights)
Weight choice, when the more the weight, the more the chance to select the element. An example from one websiteAs you can see, weights are 100% in total.
Yeah, I want to use skills values (which are unlimited) as weights. So I wonder if weight sum should be 1 in total, like in every python example about the weighted choice, or I can use raw skill values and the function will figure it out.
5000. That's lower than I thought :D
https://lemmasoft.renai.us/forums/viewtopic.php?f=4&t=26531#p323010 (https://lemmasoft.renai.us/forums/viewtopic.php?f=4&t=26531#p323010)Might be taken from https://www.renpy.org/wiki/renpy/doc/cookbook/Making_random_choice_with_some_outcomes_more_likely_than_others (https://www.renpy.org/wiki/renpy/doc/cookbook/Making_random_choice_with_some_outcomes_more_likely_than_others)
skills = ["sex", "oral", "anal"]and it works weirdly. It might be unsuitable for cases when the sum of chances is not 1.
if not(ct("Virgin")) or check_lovers(hero, char) or char.disposition >= 750:
skills.extend(["vaginal"])
skills_values=[]
for t in skills:
skills_values.append([t, char.get_skill(t)])
total = sum([t[1] for t in skills_values])
import random
r = random.uniform(0, total)
s = 0.0
for k, w in skills_values:
s += w
if r < s: return k
return k
Yeah, it works. But it cannot handle cases when all weights are 0, in which case it probably should return None (fixed it).
Shooting range? Like, for BEs?
Lol. And I once had to rewrite coordinates because at first I wrote them while launching the game in non native window mode, ie after changing window size manually with mouse, which totally messes up them :D
transform sex_scene_libido_hearth(t):
anchor (.5, .5)
block:
linear (1/t) zoom 1.1
linear (1/t) zoom 1
repeat
screen int_libido_level(sex_scene_libido):
hbox:
xpos 5
ypos 55
add libido_hearth at sex_scene_libido_hearth(sex_scene_libido)
show screen int_libido_level(sex_scene_libido)
File "game/library/interactions/GM - sex.rpy", line 278, in scriptSo how should I show that scary-scary infinite loop? :)
show libido_hearth at sex_scene_libido_hearth(sex_scene_libido)
Exception: ATL appears to be in an infinite loop.
transform sex_scene_libido_hearth(t):
anchor (.5, .5)
block:
linear (1.0/t) zoom 1.1
linear (1.0/t) zoom 1
repeat
Is it possible to recolor in real time, like im.Recolor does?
I mean stuff like
linear 1.0 recolor(rmul=255)
linear 1.0 recolor(rmul=0)
Overall, interface feels a bit awkward, I am not yet sure what to do about that. One possibility would be adding individual storing of last viewed screen/upgrade to every building. It's a lot better than it used to be.
Do you want to show all warriors in all buildings, or player has to transfer characters to the guild before they appear in the list? I'm not really sure what is the best way, showing everyone could be very messy, even with filters per building...
Anyway, I believe we need sorting by level and by character name at the teams screen. I don't see the game using buttons-switches so far, when one button can have many icons and/or text depending on the current mode, and clicking on it changes the mode. Such buttons are probably the best bet for filters like name/level.
Also, MC teammates cannot be a part of SE, unless MC is a part of SE too. We probably could set them as his team automatically once you drag MC to a team frame.
BE probably should use random music if no music is specified. It looks very weird when they fight in silence.
I need to initiate a battle inside interaction. Well, not inside, but after some action I need to exit interaction screen, run BE, then depending on result call interactions labels for the character to say something, basically return to interaction screen.
You can just run BE as a single python statement never leaving interaction label so there shouldn't be any issues.No, there are plenty of issues, such as all elements of interactions gui remaining on the screen.
No, there are plenty of issues, such as all elements of interactions gui remaining on the screen.
hide screen name
before launching BE.
I need to know somehow where gm was started to provide a suitable background for BE.
self.label_cache = ""
self.bg_cache = ""
self.jump_cache = ""
Do you want to show all warriors in all buildings, or player has to transfer characters to the guild before they appear in the list? I'm not really sure what is the best way, showing everyone could be very messy, even with filters per building...
Anyway, I believe we need sorting by level and by character name at the teams screen. I don't see the game using buttons-switches so far, when one button can have many icons and/or text depending on the current mode, and clicking on it changes the mode. Such buttons are probably the best bet for filters like name/level.
Also, MC teammates cannot be a part of SE, unless MC is a part of SE too. We probably could set them as his team automatically once you drag MC to a team frame.
Although you mentioned that characters should (or will) have current location property, I imagine it should be the most reliable way for such checks.
We could use a shortcut button in BE to lose the battle to test outcomes of losing. There are various ways to to get around it, such as starting as zero mc or changing the code, but they are less convenient than such a button.
Come on... don't run the BE at all and preset data to whatever the conditions you wish to test, what can possibly be any different?Usually the lack of music, background and other needed pictures, which can only be noticed after closing real BE, since you have to return everything manually after using BE :D
You can easily simulate outcomes of whatever the hell was supposed to have happened in BE or SE or anywhere else without ever having to run them cause all they can offer is to return a list of corpses/alive team mates/set a flag/add an item and etc.Not quite. For example, let's say I 'm planning to run a scene when the team finds something in SE (but hasn't returned yet). But turns out SE can't support such stuff, goodbye scene. Well, I dunno if it will be able to support it, it's just an example.
Usually the lack of music, background and other needed pictures, which can only be noticed after closing real BE, since you have to return everything manually after using BE :D
Btw how to implement results of BE to characters? Like, remaining health and mp.
Not quite. For example, let's say I 'm planning to run a scene when the team finds something in SE (but hasn't returned yet). But turns out SE can't support such stuff, goodbye scene. Well, I dunno if it will be able to support it, it's just an example.
Another example, let's say I'm planning to make an event where MC has no choice but to run from BE because the enemy is too powerful. But even now BE doesn't support running away, goodbye event.
Button to terminate the engine quickly does make sense, I did add that for my own testing, although it will send you to main screen. This has nothing to do with loosing or winning, I'll try to make sure that it can function anywhere somehow and push.Well, another option is to add antiheal spell which deals 99999 damage to the user team, ending the fight.
You have access to teams in the order you've added them to be instance (be.teams field, it's a list) or to team objects you've created.That's what I was talking about when some time ago asked to make a function that handles battles automatically...
You can just ask about complicated cases like these and than just go on with your quest development, it doesn't prevent your from doing anything.If I don't write quests, it's not because something prevents me :D
One: It's obvious that we can create this action. So it's not that BE doesn't support it, it's that running away isn't coded in yet.Nah, it's just an example. There are infinite amounts of possible options. Running away, scripted battles, invulnerability effect for quest cases, reinforcements for enemy team, etc, etc. We'll see Alkion v.5.0 sooner than they all can be coded :) So events should be tied to existing mechanics, not the other way around.
Two: It's not really all that different from getting your party wasted in a none "battle to the death" scenario which should be our default.
Three: Yet another thing that you that you can plainly ask about.
Well, another option is to add antiheal spell which deals 99999 damage to the user team, ending the fight.
Ok, what the hell. When I fight a character hired by MC, I can kill her and nothing happens to her after battle ends. When MC dies in battle with the same code, it's instant game over. It's unfair :(
I added DarkTouch, it kills the whole party, unless someone is immune to darkness. Hopefully, AI will not use it too often in testing battle :)
I even tested it in the testing battle. DarkTouch = instant game over -_-
Yeap. I kinda figured if BasicHealingSpell adds its effect to health, negative effect might as well reduce it. I thought that type="all_allies" simply cannot work with SimpleMagicalAttack, but if it's not the case, then I wonder why you added BasicHealingSpell instead of using negative effect with SimpleMagicalAttack.
Oh, and running away is just an example. It should exist inside SE, but inside normal BE it's not so useful. If you want to add something to BE, resolve issue 174 instead :)
New sorting logic incoming right after I've download new tracks. New code is fine and very flexible, instantiation is a bit "meh" but who gives a crap :D Maybe I'll find a way to import it in the future. I'll recode chars list filters to work with it next.
Hm. Characters lines still don't support everything. I left a few ー symbols by mistake, and the game doesn't know how to show them.
It might be an unusual space of some kind, I searched for it and found 19 hits in whole interactions. But still, I don't think it's a rare japanese space for special cases.
As long as we rip lines from translated japanese games, we'll keep having issues like that. There is no way to know that a space is wrong until you see the line in the game ::)
Huh. When you enter a location with foreword, such as beach or park gates, the buttons to look around and meet characters are available immediately, even before location introduction ends. If there is an event tied to looking around, it also starts immediately after you look around, right in the middle of the introduction.
It's... not very failproof, I think.
if "park" in gm.label_cache:I want to pick background randomly, like not just b_park_3.jpg, but any background from the be folder that has park in its name. I suppose I could make it work like choice (background name 1, background name 2), but I wonder if it can be done easier, like the random choice for battle music you added recently.
$ back = "content/gfx/bg/be/b_park_3.jpg"
...
$ battle = BE_Core(Image(back), start_sfx=get_random_image_dissolve(1.5), music="random", end_sfx=dissolve)
I have battle backgrounds in game\content\gfx\bg\be, such as b_city_3, b_forest_4, etc. And code likeI want to pick background randomly, like not just b_park_3.jpg, but any background from the be folder that has park in its name. I suppose I could make it work like choice (background name 1, background name 2), but I wonder if it can be done easier, like the random choice for battle music you added recently.
What exactly you want managers to do though? Irl there are HR managers and CS managers, and they are very different "classes" :)
Huh. That's a lot of work for one person.
How about not having pure manager class, but only combinations? And a manager can only affect characters with the same class. And same for jobs: a whore manager can affect whoring business.
The examples of "shooting range" games you provided last time are not particularly challenging or fun...
Funny, nothing prevents you atm from adding slaves to the MC team and fighting together. But you can't change row for such characters. How weird :D
But MC shouldn't be able to add slaves to the team, no? Because it's illegal. Unless it works only in the dev mode, I suppose.
Fair enough...
I think it should be more obvious that they accompany him, for example you always should be able to initiate interaction with them via MC team menu.
But what if they just stand in the first row doing nothing if you take them to battle? :D
This one $ gm.set_img("battle", "confident", "angry") shows no image available while the character has battle picture not with confident or angry tags. I believe it tries all tags first, then first tag + one of each tags taken from the end of taglist. But if it fails, no image is not an option too, especially when we have first tag available.
When you try it, the game tries to show gm.set_img("battle", "confident", "angry") before battle, but fails in case of this random character.
But if it fails, no image is not an option too, especially when we have first tag available.
gm.set_img("battle", "confident", "angry", type="first_default")
def set_img(self, *args, **kwargs):
"""Sets the image, bypassing the image cache.
"""
kwargs["resize"] = kwargs.get("resize", self.img_size)
self.img = self.char.show(*args, **kwargs)
$ gm.set_img("battle", "confident", "angry", exclude=["happy", "suggestive"], type="first_default")and run battle.
call interactions_fight_begins # angry girl's line about upcoming battle
hide screen girl_interactions
show expression gm.bg_cacheAnd gm.restore_img() does nothing, while it should restore and show the cached one before the battle. Am I missing something?
show screen girl_interactions
$ gm.restore_img()
call interactions_fight_won
$ gm.set_img("battle", "confident", "angry", exclude=["happy", "suggestive"], type="first_default")And image disappears.
"test"
$ gm.restore_img()
Wish that I could... but that's gonna have to wait till tonightI figured as much. My point still stands though, if you catch my meaning.
When searching for generate img, editor found just the four commented out lines, I thought they were useless.They were, but in my fixing push you can see other lines as well...
if inv_source == eqtarget:are unsuitable for many MPtraits. Usually I make a label which picks lines and call it. Should I use renpy.call here? And send to it eqtarget to make checks like "if "Impersonal" in eqtarget.traits" instead of usual "if ct("Impersonal")"?
if all([eqtarget.status != "slave", eqtarget.disposition < 850, not(check_lovers(char, hero))]):
eqtarget.say(choice(["I can manage my own things!", "Get away from my stuff!", "Don't want to..."]))
else:
equip_item(focusitem, eqtarget, area_effect=True)
else:
if all([eqtarget.status != "slave", not(check_lovers(char, hero))]):
eqtarget.say(choice(["No way!", "I do not want this.", "No way in hell!"]))
They were, but in my fixing push you can see other lines as well...
Wonders of jumpless python again. These linesare unsuitable for many MPtraits. Usually I make a label which picks lines and call it. Should I use renpy.call here? And send to it eqtarget to make checks like "if "Impersonal" in eqtarget.traits" instead of usual "if ct("Impersonal")"?
def can_transfer(source, target, item, amount=1, silent=True):
"""Checks if it is legal for a character to transfer the item.
@param: silent: If False, game will notify the player with a reason why an item cannot be equipped.
"""
if all([item.unique, isinstance(target, Player), item.unique != "mc"]) or all([item.unique, item.unique != target.id]):
if not silent:
renpy.show_screen("message_screen", "This unique item cannot be given to {}!".format(char.name))
return
if not item.transferable:
if not silent:
renpy.show_screen('message_screen', "This item cannot be transferred!")
return
# Free girls should always refuse giving up their items unless MC gave it to them.
if all([isinstance(source, Char), source.status != "slave"]):
if any([item.slot == "consumable", (item.slot == "misc" and item.mdestruct), source.given_items.get(item.id, 0) - amount < 0]):
if not silent:
if "Impersonal" in source.traits:
source.say(choice(["Denied. It belongs only to me.", "You are not authorised to dispose of my property."]))
elif "Shy" in source.traits and dice(50):
source.say(choice(["W... what are you doing? It's not yours...", "Um, could you maybe stop touching my things, please?"]))
elif "Dandere" in source.traits:
source.say(choice(["Don't touch my stuff without permission.", "I'm not giving it away."]))
elif "Kuudere" in source.traits:
source.say(choice(["Would you like fries with that?", "Perhaps you would like me to give you the key to my flat where I keep my money as well?"]))
elif "Yandere" in source.traits:
source.say(choice(["Please refrain from touching my property.", "What do you think you doing with that property of mine?"]))
elif "Tsundere" in source.traits:
source.say(choice(["Like hell am I giving away!", "Hey, hands off!"]))
elif "Imouto" in source.traits:
source.say(choice(["No way! Go get your own!", "Don't be mean! It's mine!"]))
elif "Bokukko" in source.traits:
source.say(choice(["Hey, why do ya take my stuff?", "Not gonna happen. It's mine alone."]))
elif "Kamidere" in source.traits:
source.say(choice(["And what makes you think I will allow anyone to take my stuff?", "Refrain from disposing of my property unless I say otherwise."]))
elif "Ane" in source.traits:
source.say(choice(["Please, don't touch it. Thanks.", "Excuse me, I do not wish to part with it."]))
else:
source.say(choice(["Hey, I need this too, you know.", "Eh? Can't you just buy your own?"]))
return
return True
if all([eqtarget.status != "slave", eqtarget.disposition < 850, not(check_lovers(char, hero))]):5 times already, and may be more in the future.
eqtarget.say(choice(["I can manage my own things!", "Get away from my stuff!", "Don't want to..."]))
else:
equip_item(focusitem, eqtarget, area_effect=True)
else:
if all([eqtarget.status != "slave", not(check_lovers(char, hero))]):
eqtarget.say(choice(["No way!", "I do not want this.", "No way in hell!"]))
else:
if transfer_items(inv_source, eqtarget, focusitem):
equip_item(focusitem, eqtarget, area_effect=True)
elif item_direction == 'unequip':
if eqtarget == hero:
hero.unequip(focusitem, unequip_slot)
else: # Not MC
if eqtarget.status == "slave": # Slave condition:
eqtarget.unequip(focusitem, unequip_slot)
eqtarget.inventory.remove(focusitem)
inv_source.inventory.append(focusitem)
else: # Free Girl
if inv_source == hero:
eqtarget.unequip(focusitem, unequip_slot)
if not transfer_items(eqtarget, hero, focusitem, silent=False):
eqtarget.equip(focusitem)
eqtarget.say(choice(["I can manage my own things!", "Get away from my stuff!", "I'll think about it..."]))
elif eqtarget.disposition < 850:
eqtarget.say(choice(["I can manage my own things!", "Get away from my stuff!", "I'll think about it..."]))
else:
eqtarget.unequip(focusitem, unequip_slot)
focusitem = None
selectedslot = None
unequip_slot = None
item_direction = None
dummy = None
elif result[1] == "discard":
python:
if inv_source == hero:
renpy.call_screen("discard_item", inv_source, focusitem)
else:
if eqtarget.disposition < 850:
eqtarget.say(choice(["I can manage my own things!", "Get away from my stuff!", "I'll think about it..."]))
if c_ch.type == "male":
text = text.replace(text[start_s:end_s+1],text[start_s+3:term_s],1)
elif c_ch.type == "female":
text = text.replace(text[start_s:end_s+1],text[term_s+1:end_s],1)
else:
renpy.notify("Что в моей игре делают богомерзкие футунари?!!")
renpy.pause(10)
Um, issue 85 related to interactions rewriting claims it will be done for 1.3 version. That's not before releasing at all, more like waaaay after.
I wonder if high level spells should be banned in most areas by default... You insult character, she engages in battle with you, and you start summoning meteors in the city park. That's insane :)
I wonder if high level spells should be banned in most areas by default... You insult character, she engages in battle with you, and you start summoning meteors in the city park. That's insane :)
That's not true. If you try out a massive spell inside a city in games like skyrim, it will lead to casualties and prison. In our case forcing MC to sit in prison is more clunky than just forbid those spells.
Skyrim is a really bad example for massive spells though, they look and damage poorly without mods. If we take Dragon Dogma (https://youtu.be/uCtARsbRjzM?t=10m59s), it will be a different story. Imagine what it can do with paving stone :)
If we forbid spells in brawls because it's not wise to summon meteors in your own building, then meteors damaging city property are a thing too.
I think it's too easy to find characters atm. 3 per location, guaranteed. And unique ones probably should be more rare than random ones.
As I've explained multiple times, one of the chars is always the one you know best or that is otherwise predisposed to you. The other is any random unique character. And finally, if I recall correctly, we get one at random...Meanwhile in classic wm you can have to pass a check to meet one single character.
Also, sometimes in location there are two copies of the same random character. It's not an issue by itself, but very often they use exactly the same picture, and that looks meh.
Too bad I cannot drink alcohol anymore due to lack of gallbladder :D
So, what's up with slaves rights?
Can master freely hit, rape, kill one? Where is the line between free ones and slaves in Pytfall, other than free labor? I dunno if slaves had any rights in ancient Rome you often used as example, but if they are 100% property, pretty much like a table, then anything is allowed, no?
I mean, so far it was just a theory. But I need a real concept for evil interactions.
Problem is that it's a fail at the end. It's proven that slavery is inferior to motivation through personal profit. There is little point in debating that.
**I am thinking we should try to give the whole slave training and maybe the gameplay itself different approach. In ancient times, values of skilled slaves was insane (skilled medical practitioner 50 - 70 times unskilled slaves, skilled artists/musicians x25 value the unskilled slaves, scribes x10 value of the unskilled slaves and etc.)So, slaves don't work properly due to lack of motivation, but also cost a lot. What's the point of having one, other than having a sex slave? :D
It might not be a bad idea to build the whole game around something like that (full training could take up to 1000 days and require a professional trainer (who can in turn train several slaves at the same time)).
Yeap, it is... everything goes...Btw we discussed it once, when I asked how far goes slaves obedience. You said something along the lines that even a trained slave is not going to follow any order, and will refuse for example to have sex with MC if disposition is low.
So, slaves don't work properly due to lack of motivation, but also cost a lot. What's the point of having one, other than having a sex slave? :D
Btw we discussed it once, when I asked how far goes slaves obedience. You said something along the lines that even a trained slave is not going to follow any order, and will refuse for example to have sex with MC if disposition is low.
I've also wrote a number of times that there should be options like a promise of release after 10 - 15 years of serviceWhy bother with buying and training slaves, giving them valuable skills, if they will leave eventually, or at best will become free and continue to work for you?
or threats of selling them off to some rural areas where they are using treated much worse than in cities or sell off to work in mines till they drop (kinda of a slow death sentence).It only forces them to follow orders. They are still not motivated like free ones.
"trained"... I think that's a BS concept. Trained to do what?Trained to follow orders. Speaking of training, why Blue does what she does when you arrive to the slavemarket if there is no training, only promises and threats?
Why bother with buying and training slaves, giving them valuable skills, if they will leave eventually, or at best will become free and continue to work for you?
Roman slaves could hold property which, despite the fact that it belonged to their masters, they were allowed to use as if it were their own.[2] Skilled or educated slaves were allowed to earn their own money, and might hope to save enough to buy their freedom.[3][4] Such slaves were often freed by the terms of their master's will, or for services rendered. A notable example of a high-status slave was Tiro, the secretary of Cicero. Tiro was freed before his master's death, and was successful enough to retire on his own country estate, where he died at the age of 99.[5][6][7]
Especially, why would anybody buy skilled ones for huge amounts of money, if they will have to be released soon enough since training itself should take many years from those 10-15.
You might as well hire and teach free ones, since they will be more motivated and will put those skills to better use, and also don't have any slaves restrictions.
It only forces them to follow orders. They are still not motivated like free ones.
Trained to follow orders. That's what Blue does in your own event when player comes to slave market.
If there is no training involved, then ST module can be added here and now, after deleting Blue event of course. It will include two buttons, one is to promise freedom after randint(10,15) years, another one is threatening to sell them to the Eternal Rome from JoNT, where they will be fkn eaten alive :D
Ephesians 6:5
Slaves, obey your earthly masters with fear and trembling, with a sincere heart, as you would Christ,
I got an impression from your explanations back then that slaves in Pytfall are like slaves in the game from this (http://www.pinkpetal.org/index.php?topic=3562.0) thread. Yes, they follow any personal orders, but they still have rights and cannot be just killed on spot or raped by anyone.
It will include two buttons, one is to promise freedom after randint(10,15) years, another one is threatening to sell them to the Eternal Rome from JoNT, where they will be fkn eaten alive :D
Right. So why Blue does what she does if training cannot be forceful?
Other char may respond with: "Go fuck yourself, I will rather die that serve anyone.". The trouble is that assuming that the second char can be trained is BS.
Because it's useless. Either they agree, with some conditions or not, or disagree. You said it yourself.
So when you whip them, it's just a waste of time. I suppose completely destroying personality might help, but it requires JoNT stuff, not some light whipping.
I cannot understand slaves worldview due to contradictions in concept. Depending on worldview they should react differently in different cases.
Misbehaving slaves go to Eternal Rome immediately as a common practice? Then there are two types of slaves, dead ones and [completely obedient because not stupid] ones. There is even no need in any ST or checks or promises.
All slaves will be free after a few years and even will become respectable citizens, while costing too much to be killed without a second thought?
Then they can say "GFY [hero.name], I'm not going to have sex with you just because you are happened to be my Master."
Which contradictions?You just told me ST, like in SM and JoNT, is BS. Then you told me there will be ST with whipping as a part of it. Why? It's a BS, you said it yourself. Are we adding BS to the game now? :)
Exactly. What you do with that depends on your preferences and responses. Do you want to kill/rape a salve you invested in? Or not?I understand that. I'm not wondering how MC should react to such lines. I'm wondering if slaves should even speak such lines or not.
Btw I have to say, I'm skeptical about making slaves free after 10 years = 3650 turns. It's like borrowing 10 000 000 gold from a bank to return 50 000 000 after 5000 turns. It might be a problem after all those turns will pass, but does the game last that long? If not, then such mechanics are empty and unbalanced.
You just told me ST, like in SM and JoNT, is BS. Then you told me there will be ST with whipping as a part of it. Why? It's a BS, you said it yourself. Are we adding BS to the game now? :)
I understand that. I'm not wondering how MC should react to such lines. I'm wondering if slaves should even speak such lines or not.
As a more topical example, insults. Free chars with high disposition think it's a joke, with a small disp drop, then kicks in flag which forbids you to use the same option over and over. Chars with low disposition either stop talking with you, or attack you.
Now, how slaves are supposed to react? Can they even attack MC? Should they even use the blowoff flag? That depends. In JoNT they can attack you all right. In SM it never happens.
Well... lets say that you have a slave girl who agreed to work as a cook. You suddenly approach her and tell her to fuck a pig. Than byte of that pigs cock, cook it and eat it... Should that be an automatic: Yes, My Master! or should she... I don't know, maybe say something? Or try to run away screaming for help...You should help sometimes Old Huntsman with ideas for slave training options in his games :D
You should help sometimes Old Huntsman with ideas for slave training options in his games :D
Since you used an extreme example, disposition doesn't mean much here. Thus, in my opinion, if the said slave was trained in a hard way, she might consider silently doing the said stuff, because it's still better than another few months in a dungeon where she will be forced to do similar stuff anyway. And a "voluntary" slave might doubt her decision about obeying MC's commands and run away screaming for help.
Ohhkey then, slaves will react similar to free chars, except you have to try really hard and long to provoke them :)
And since slaves cannot be encountered during GMs, we came to the issue 175.
Caught a cold yesterday, gonna go to bed early today...
"_day_countdown_interactions_blowoff" flag #175
If you have different ideas, lets hear them. I am just putting my own thoughts in the table. It's not "similar" to free characters, they should respond normally and sensibly.Right, ~dere characters responding normally and sensibly... :)
You made a good case on encountering slaves in the city, I just don't know how sensible that that from game play perspective. Concept wise it makes sense, but "concept wise" it doesn't make any sense that you only meet females and only max three at a time either :D Compromises need to be made until we are ready to improve stuff.I personally think it's too easy to find characters atm. The city is full of unemployed chars, it's unrealistic.
Yeah, I think this is fixed, flag wasn't activating for interactions, only for gms.Yeap, it works now, didn't worked before.
The city is full of unemployed chars, it's unrealistic.
I mean, I personally dislike the word "Master", and would prefer chars to just use hero.name. But I bet there are people who'd love chars to address them as Master.
Per char, I suppose. Hero.name could be a dict of [character : name for hero]. Or it will be a new thing like char.name_for_hero.
Nah, that is never useful when we're working with objects. Ok, I'll see what we can do.
# Properties:
@property
def mc_ref(self):
if self._mc_ref is None:
if self.status == "slave":
return "Master"
else:
return hero.name
else:
return self._mc_ref
While you're at it, would it make sense to come up with pronouns? Like "his"/"hers"? Or is this an overkill at this dev stage?Sure, go ahead. I'll replace pronouns with keywords. He/She, His/Her. I suppose cases like herself or hers are just keyword+"self" or "s".
Sure, go ahead. I'll replace pronouns with keywords. He/She, His/Her. I suppose cases like herself or hers are just keyword+"self" or "s".
# Properties:
@property
def mc_ref(self):
if self._mc_ref is None:
if self.status == "slave":
return "Master"
else:
return hero.name
else:
return self._mc_ref
@property
def p(self):
# Subject pronoun (he/she/it): (prolly most used so we don't call it 'sp'):
if self.gender == "female":
return "she"
elif self.gender == "male":
return "he"
else:
return "it"
@property
def pC(self):
# Subject pronoun (he/she/it) capitalized:
return self.p.capitalize()
@property
def op(self):
# Object pronoun (him, her, it):
if self.gender == "female":
return "her"
elif self.gender == "male":
return "him"
else:
return "it"
@property
def opC(self):
# Object pronoun (him, her, it) capitalized:
return self.op.capitalize()
@property
def pp(self):
# Possessive pronoun (his, hers, its):
# This may 'gramatically' incorrect, cause things (it) cannot possess/own anything but knowing PyTFall :D
if self.gender == "female":
return "hers"
elif self.gender == "male":
return "his"
else:
return "its"
@property
def ppC(self):
# Possessive pronoun (his, hers, its) capitalized::
return self.pp.capitalize()
"[hero.pC] ran away screaming as [char.op] staff menacingly emitted mana ..."
Jeez, can't they be more memorable? Hero.hisher or hero.heshe would be better :D
Or, and there is also "him" and "his".
Btw even if there will be male chars at some point, they should use completely different lines in many cases. I definitely don't want males to use some sleazy lines made for females :D
def hs(self):But strings like
if self.gender == "female":
return "sister"
else:
return "brother"
def hss(self):
if self.gender == "female":
return "sis"
else:
return "bro"
I need the same for brother and sister due to one trait.
I addedBut strings like
"[hero.hs]"
"[hero.hss]"
give me <bound method Player.hss of <store.Player object at 0x11F90AB0>> right in the dialogue window. ::)
No, it's totally closer to RTS than to RPG. Yes, you can have a team, but it's not nearly as unique and special feature as an RPG requires.
Xela, things like [char.pC] don't work inside rts function, such as the one in the interactions_interests label.
Bro's. although I like your game I get the impression you are trying to make 5 games at once.
I also becomes very convoluted when you have many girls who end up mutations of each other statwise despite having been obtained through different RPG inspired quests.
So I drew a graph. I'm wondering,is the focus on the Main character and his team of girls, which makes it an RPG, or the main character and his pimping business, which makes it a management game with flavour combat events
Xela, things like [char.pC] don't work inside rts function, such as the one in the interactions_interests label.
Is there anyone who made a comprehensive graph about what features influence which others?
I mostly see people discussing flavour and legit programming issues on the forum but I have the impression too much options meander out to the extremes of the graph and are therefore not very important in the grand scheme of things. I can't code or write at all but I have some ideas on making mechanics interact more solidly with each other. You guys can also have all my cringeworthy stuff from way back when I still wanted to make porn games
Major thing at this point is probably this:
Currently it looks like a dating sim since you spend time/capital on picking up girls to work for you, who then become generic collections of numbers. The flavour text and events are all in the picking up phase.
To make it a pimping game, write events that add flavour and traits to girls based on what they do in their jobs. They are still generic collections of numbers but the focus shifts to a pimping game.
I can't code or write at all but I have some ideas on making mechanics interact more solidly with each other. You guys can also have all my cringeworthy stuff from way back when I still wanted to make porn games
Wait how about this:
Instead of job X gives n XP > spend it on skills
Do something like
building, job, item or whatnot has either a chance or a counter to add trait Z which in turns affects the skill sets that are already there. I did that once only with medieval warfare but the principle is solid
EDIT: I'll play the alpha again and refresh my mind on how stuff fits together. I can usually make decent games but I forgot the mechanics of this one. Also never understood tax, I always died when they came to collect tax halfway through
Why "instead", why can't it be all of that at the same time? I think out ideas about manager effects to the jobs and the buildings are far more interesting and carry more options and possibilities. But there is no reason why it cannot be both, you can better and more confident the more time you spend doing something productive (XP gain, very general). You gain skills (either very specific or at least specific). Gaining traits is not an issue, we just didn't design a lot of those traits yet that would be a good option to be acquired during jobs/training (but we have some).
I am not sure that Alpha gameplay is relevant to Beta, download it if you like, but this is what more modern version look like (without H stuff which YouTube frowns upon):
https://www.youtube.com/watch?v=VowPkYSq_6k (https://www.youtube.com/watch?v=VowPkYSq_6k)
https://www.youtube.com/watch?v=gwMiX1GFHtI&feature=youtu.be (https://www.youtube.com/watch?v=gwMiX1GFHtI&feature=youtu.be)
https://www.youtube.com/watch?v=PJCwnZxGQBc (https://www.youtube.com/watch?v=PJCwnZxGQBc)
it's all open source btw if you have time to figure out how to get it to work, we have a guide for that somewhere I think.
Xela, things like [char.pC] don't work inside rts function, such as the one in the interactions_interests label.
$ line = rts(char, {
"Exhibitionist": ["She tells you pretty hot stories about her exhibitionistic adventures in a local park."],
"Athletic": ["You discuss beach volleyball which became quite popular among local girls lately.", "You discuss places for swimming. Looks like most girls prefer beaches to pools because it's free."],
"Manly": ["She gives you a lecture on how to build your muscles properly. You feel a bit offended, but keep your cool.", "She casually remarks that you should exercise more often, and gives you some advice."],
"Chubby": ["You have a lively discussion about your favorite local bakeries and pastry shops.", "Your conversation turns toward cooking, and she shares some of her recipes. They are all pretty high in calories..."],
"Slim": ["You compliment her figure, and the conversation quickly turns toward healthy lifestyle. Ugh.", "She brags about her metabolism, allowing her to eat sweets and not get fat. You envy her."],
"Alien": ["She talks about her homeland. You are listening with interest.", "You discuss local events she witnessed. She doesn't understand the meaning of some of them, and you spend some of your time to explain."],
"Half-Sister": ["You discuss your common father. The sad discussion quickly turns into a sarcastic one, when you try to count all his lovers and daughters.", "She tells you about her mother. You listen in silence, trying to imagine yours.", "You spend time together you reminiscing about fun and embarrassing moments from your childhood."],
"Scars": ["She complains about how her scars cause inconvenience. You comfort her."],
"Artificial Body": ["Tempted by curiosity, you ask about her artificial body. Her explanations are very long and confusing.", "You discuss the regular maintenance required by her body. It's a pretty complex, but piquant conversation."],
"Lolita": ["She complains about how hard it is to find adult clothes for her figure. You're trying to take her away from this sensitive topic.", "She tells you funny stories about disappointed (and imprisoned) paedophiles confused by her body size. What a strange topic."],
"Strange Eyes": ["She notices how you look at her unusual eyes. Embarrassed, she refuses to look at you or discuss anything."],
"Great Arse": ["You try to keep it to small talk, trying not to think about her gorgeous butt and what would you do if you were behind her."],
"Long Legs": ["During your small conversation you can't help but glance at her long legs. Looks like she is used to it and doesn't care much."],
"Abnormally Large Boobs": ["You vaguely remember your conversation, paying most of your attention to her amazing chest.", "She complains about high costs for the purchase of new bra. It appears that the fabric is not strong enough to withstand such loads. Without knowing what reaction she expected, you keep your poker face."],
"Big Boobs": ["She complains how a big chest spoils the posture. You sympathize with her, very convincingly and almost sincerely."],
"Small Boobs": ["She starts a conversation about irrelevance of chest size. You carefully assent, trying to not piss her off."],
"Fire": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of fire."],
"Water": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of water."],
"Air": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of air."],
"Earth": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of earth."],
"Ice": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of ice."],
"Electricity": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of electricity."],
"Light": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of light."],
"Darkness": ["Your conversation turns to magic, and she enthusiastically tells you the intricacies of dealing with the power of darkness."],
"Nerd": ["You discuss new books in local stores and libraries.", "Somehow your conversation comes to board games, and she enthusiastically explains to you the intricate rules of one of them."],
"Psychic": ["It's difficult to participate in the conversation when your interlocutor knows your words in advance. She seems to enjoy teasing you, however.", "She complains about headaches, dizziness and other neural disorders that are common for psychics."],
"Optimist": ["Looks like she is in a good mood. Laughing and joking during your conversation, she quickly turns it into a humorous one.", "You exchange your freshest anecdotes."],
"Pessimist": ["Looks like she's not in the mood. Your conversation is pretty gloomy, though you managed to cheer her up a bit."],
"Serious": ["You have a very serious conversation about local politics and taxes. You feel squeezed like a lemon.", "She gives you a lecture about the importance of planning for the future. You heroically hold back a yawn."],
"Extremely Jealous": ["She inquires about your relationships with other girls. You carefully dispel her concern, trying not to make definitive statements."],
"Virtuous": ["She tells about her volunteer work. It's nice, but a bit boring."],
"Vicious": ["She gossips with obvious pleasure about her acquaintance's misfortunes."],
"Dawdler": ["You have a lazy, indolent discussion. Looks like she's half asleep.", "She pensively tells you about her recent dreams. You begin to feel drowsy."],
"Clumsy": ["You talk about misfortunes caused by her clumsiness. You heroically hold back a smile and comfort her instead."],
"Nymphomaniac": ["An innocent conversation turns into the discussion about sexual positions. She's really into this stuff.", "She passionately talks about her recent sexual adventures. Wow."],
"Heavy Drinker": ["You discuss various types of alcohol, sharing your drinking experience."],
"Always Hungry": ["You talk about food for some time. Looks like she can do it for hours, so you carefully interrupt the conversation."],
"Curious": ["You exchange the latest news and gossip. She really knows a lot about it."],
"cgo('Warrior')": ["You discuss the recent fights at the arena and their participants.", "You discuss a variety of fighting styles."],
"cgo('Caster')": ["She enthusiastically talks about mysteries of arcane arts.", "You discuss her magical studies."],
"cgo('SIW')": ["You gossip about the strangeness of some of her customers."],
"cgo('Server')": ["She recounts rumors that she heard from customers lately. People tend to not notice service workers when they are not needed."],
"default": ["You chat for some time."]
})
"[line]"
$ del line
"[line]"
$ narrator("{}".format(line))
or if a char was speaking: $ char.say("{}".format(line))
This looks pretty next gen. All my ramblings were based on the alpha. Where can I get the beta?
I often use extend in the sex scene. Lately i noticed that after I output next part of the text via extend, previously outputted text kinda becomes compressed, all spaces in it become a bit smaller.
It looks very bad.
$ narrator("{}".format(line))
$ narrator(line)
After you beat the character, one of possible options might be to rob her. It's easy to do for gold, but I'm not sure how to it for items.
Probably get a list of character items while filtering out some of them based on items fields and then pick one-two randomly. Except I dunno how :)
Now, can renpy support 30+ independent moving objects with different algorithms? :)
I have traces of ST module in interactions. What's up with it atm? Can I delete those (purely placeholdering) lines?
Because iirc it was coded for JoNT-style training, with rewards and stuff, so it probably will be fully rewritten by you.
I think that there is still some form of running away + recapture mechanic in place there.Yeah, that's kinda what I was wondering about. Does it even work outside of that ST module?
Yeah, that's kinda what I was wondering about. Does it even work outside of that ST module?
label training_event_runaway:There is literally no more text related to running away, other than system messages about remaining days and stuff :D
"You attempt to train [char.name], but she manages to escape before you can start!"
jump girl_interactions
# The generic event for recapturing slaves that have escaped during look around actions.
#
label escaped_girl_recapture(event):
# Get the specific girl
$ char = pytfall.ra.get_look_around_girl(event)
# If something goes wrong
if char == None:
hero.say "Wait is that?.."
hero.say "Must be my imagnination..."
return
else:
hero.say "Wait is that?..{w} It is!"
"You sneak forwards carefully, trying hard not to alert your pray.\nWhen you get close enough..."
hero.say "Ah ha!{nw}"
char.say "Ah! What? No!{nw}"
"You grab [char.name]'s arm and hold on tightly as she tries to struggle."
hero.say "Found you. You won't be escaping again."
char.say "..."
# Return the girl to the player
$ pytfall.ra.retrieve(char)
return
So tricks like body swapping or something like that are probably more preferable than true female MC.
I believe you proposed an idea a few years ago to allow female MC to use any girl pack as a base. Meaning female MCs do not need some special packs.
Hm. With set_status function I can add interaction to free a slave, right? And vice versa, to propose a char with close to max disp and close to 0 character to become one.
Our approach here is prolly f*cked. Rather than managing all of that logic, we could have simply blocked the corresponding buttons. Of well... since it's working already...By all means, block all buttons and add to the tooltip why they were blocked to not confuse players.
Throw it in the dev menu (I've updated it, put it under logic).Oh boy, it's another win10 + scaling factor thing :D
how it's not supported for win10.
Fun... reading that code... it's impossible to equip any item on a slave, nothing will happen if you try :(My bad. I didn't paid attention how it will work for permitted items after changing it to deny armor and shields too.
My bad. I didn't paid attention how it will work for permitted items after changing it to deny armor and shields too.
All cases when a character refuses to give away an item should lead to one set of lines. That includes attempts to discard items.
Although, since we have at least two different screens to transfer items, it might not be possible to make them use the same set.
All cases when a character refuses to equip an item should also lead to one set of lines. Different from the previous one.
if item_direction == 'equip':
# Common to any eqtarget:
if not can_equip(focusitem, eqtarget, silent=False):
focusitem = None
selectedslot = None
unequip_slot = None
item_direction = None
dummy = None
jump("char_equip_loop")
# See if we can access the equipment first:
if equipment_access(eqtarget, focusitem):
# If we're not equipping from own inventory, check if we can transfer:
if eqtarget != inv_source:
if not transfer_items(inv_source, eqtarget, focusitem):
# And terminate if we can not...
jump("char_equip_loop")
# If we got here, we just equip the item :D
equip_item(focusitem, eqtarget, area_effect=True)
elif item_direction == 'unequip':
# Check if we are allowed to access inventory and act:
if equipment_access(eqtarget):
eqtarget.unequip(focusitem, unequip_slot)
# We should try to transfer items in case of:
# We don't really care if that isn't possible...
if inv_source != eqtarget:
transfer_items(eqtarget, inv_source, focusitem, silent=False)
So... I stuffed the usual rules we had here into that func but it's not enough. For "equipping" items, we need one extra parameter: item. Even if the character doesn't like you well enough, if it's a good item like a health potion for example, there should be no reason to refuse.type=="restore" items can be always available then. Although, with disposition < -700 and status<>"slave" anything should be unavailable, I think.
You know items logic as well as I (prolly better cause you made most of the items). We need to figure out when a char might want to allow access to inventory even if MC is not liked...What do you mean by access here? Full access, like for slaves?
Uh, so far I added lines for the big transfer screen in buildings menu, which only handles transferring items.
Lines from char.say(choice(["I can manage my own things!", "Get away from my stuff!", "Don't want to..."])) are yours :)
Then again, you simply can disable transfer buttons even there, it's cleaner then showing refusing lines every time. And do the same for equipping button instead of that line above. The problem here is to make it clear why buttons are unavailable. If renpy can manage local tooltops like in windows, when a small window with explanation appears next to cursor only when needed, it might be the best way.
type=="restore" items can be always available then. Although, with disposition < -700 and status<>"slave" anything should be unavailable, I think.
For other items we have goodtraits field. Character has no reason to refuse if goodtrats match her traits, unless disposition < -700 again.
That's it, if we involve too many exceptions, the very idea of locked characters inventories will become obsolete.
What do you mean by access here? Full access, like for slaves?
Also, we should add items with really, really high eqchance (or what ever that was called) to this. Maybe also add different responses? Like when you give an item that is a match on traits: "Thanks, you know me so well!". And on high eq chance: "This will be useful!" and etc.I think lines from gifts will suit such cases perfectly.
And on high eq chance: "This will be useful!" and etc.Yeah. Like, you equip a maid set on a character with maid class, and she makes positive comments about every single item from the set :D
Yeah. Like, you equip a maid set on a character with maid class, and she makes positive comments about every single item from the set :D
No thanks.
I can add such fields of course, but it's a matter of autoequipping algorithm, no? Iirc it should determine important stats for character based on her classes and figure out how suitable the item is.
python:Only one character speaks here even if you have two. Interactions_protection label outputs line depending on MPtrait and then returns. Call breaks "for", because it works without the call.
for member in hero.team:
if member <> hero:
renpy.call("interactions_protection", character=member)
It's amazing world of pythonic jumps again...
Only one character speaks here even if you have two. Interactions_protection label outputs line depending on MPtrait and then returns. Call breaks "for", because it works without the call.
Suggestions? I don't wanna manually copy battle lines for every battle :)
python:
# 10 000 000+ lines of code
any battle outside arena and SE.
I've told you, it's not Python (renpy.call) and you're not using it right (again). Call takes you back to the prev Ren'Py statement, I've already explained that:It doesn't look like previous statement, because it means infinite loop with for. It looks like next statement, after for.
enemy_team = Team(name="Enemy Team", max_size=5)How is it possible to have 5 team members?
I didn't know about call_in_new_context before, you used it literally two times in the whole game until now.
How is it possible to have 5 team members?
def __init__(self, name="Brothel", instance=None, desc="Rooms to freck in!",Uh, freck in? What is it even means? :D
Uh, freck in? What is it even means? :D
You could have any amount of members for logical purposes. You can't do that for BE in player mode because there is no placing algorithm that goes beyond three.
Might even pass for Arena... I like it. Code is fixed in any case.I'm concerned about cases when you have chars with identical MPTraits though. If they will say the same line, it won't look well, so I'll need a bit more lines and better algorithm to prevent it.
I'm concerned about cases when you have chars with identical MPTraits though. If they will say the same line, it won't look well, so I'll need a bit more lines and better algorithm to prevent it.
Maybe it's better to show prebattle lines inside BE in the beginning of fight, if it's possible?
You know, turns out it's pretty easy to find battle quotes from other games, and a lot of them. For attacks, for dodge, for crit hit, for spells (different depending on element).
Might we worth adding after 1.0.
l = len(characters)
if len > 0:
Is perfectly workable but always frowned upon in favor of simpler if characters:. if result:
character.say(result)
Not really required because there should be no case where this fails cause you cover all the bases with choices. Also choice([]) is a crash so it would fail with a crash before that anyhow.return
is not required, I don't actually remember what great "pythonistas" say on the topic (if it should be added or not for clarity and readability).File "game/library/interactions/GM - chat.rpy", line 4, in scriptError is still there. I put 2 kuudere in hero team and and run the function for the team 1-3 times to get the error :)
$ interactions_prebattle_line(hero.team)
File "game/library/interactions/GM - chat.rpy", line 4, in <module>
$ interactions_prebattle_line(hero.team)
File "game/library/interactions/function - interactions (GM).rpy", line 323, in interactions_prebattle_line
character.say(result)
KeyError: 'character'
Ren'Py will interpolate variables found in the global store. When using a text widget in a screen, Ren'Py will also interpolate screen local variables. (This can be overridden by supplying an explicit scope argument to the Text displayable.)
... bla bla bla
elif "Imouto" in character.traits:
lines = ["Ahaha, we'll totally beat you up!", "Behold of my amazing combat techniques, {mc_ref}! ♪"]
... bla bla bla
result = random.sample(set(lines).difference(said_lines), 1)[0]
result.format(mc_ref=character.mc_ref)
Even if result doesn't have mc_ref? Wouldn't it be an error then?
It's an imperfection in the engine I guess
result = result.replace("[character.mc_ref]", character.mc_ref)
Not really required because there should be no case where this fails cause you cover all the bases with choices. Also choice([]) is a crash so it would fail with a crash before that anyhow.Well, it means that the function cannot be used for teams with more than 4 characters of the same MPTrait, because there won't be enough lines for them :)
"Kill her":
"She stopped breathing. Serves her right."
$ char.health = 0
File "game/library/interactions/GM - negative.rpy", line 22, in script::)
$ char.health = 0
File "game/library/interactions/GM - negative.rpy", line 22, in <module>
$ char.health = 0
File "game/library/characters/classes - characters.rpy", line 3244, in __setattr__
self.__dict__["stats"].mod_base_stat(key, value)
File "game/library/characters/classes - characters.rpy", line 900, in mod_base_stat
self.mod(key, value)
File "game/library/characters/classes - characters.rpy", line 988, in mod
hero.remove_girl(girl)
File "game/library/characters/classes - characters.rpy", line 2601, in remove_girl
if char in self._char:
File "game/library/characters/classes - characters.rpy", line 1200, in __getattr__
raise AttributeError(msg % (key, self.__class__.__name__))
AttributeError: '_char' is neither a gamestat nor an attribute of Player
File "game/script.rpy", line 289, in script callI thought maybe I need a new testing file, but the link you provided some time ago now leads to test_cases.rpy, which is something completely different.
call testing
File "game/library/testing.rpy", line 2, in script
python:
File "game/library/testing.rpy", line 55, in <module>
hero.add_girl(new_random_girl)
File "game/library/characters/classes - characters.rpy", line 1200, in __getattr__
raise AttributeError(msg % (key, self.__class__.__name__))
AttributeError: 'add_girl' is neither a gamestat nor an attribute of Player
I thought maybe I need a new testing file, but the link you provided some time ago now leads to test_cases.rpy, which is something completely different.
Does the game track which item was given by MC or something?
Anyway, just add the logic. We always can improve sprites after that.
I've cleared the 3 new issues you've created but I recon plainly randomly choosing from pool of items at this stage of development would have been simpler and smarter at this stage of development but I'll make sure all chars have some items before releasing.Nothing wrong with poor, lvl1 level characters not having any items though. Of course we can just give a random cheap item even then.
I've ran a check for chars without a battle sprite, Melona and Kushina are the only once missing it, but I don't have all the packs and might not have last versions.Yeah, your packs are super outdated, those two didn't have sprites like 1.5 years ago :D
Gifts cannot be transferred not only to character, but also from character. So if somehow character will get one due to overlook in the code, it will stuck there forever.
Like when character finds one in SE maybe?
Gift should not even exist in chars inventories. The game should just delete them on spot, during next day for example.
[
{
"id": "Angel",
"desc": "Inhabitants of the heavens periodically appear in the human world, either as messengers or exiles.",
"race": "Angel",
"random_stats": {
"charisma": [25, 80],
"constitution": [20, 50],
"character": [2, 40],
"intelligence": [10, 40]
},
"random_traits": [
["Long Legs", 35],
["Alien", 100],
["Virtuous", 90],
["Vicious", 100],
["Big Boobs", 50],
["Average Boobs", 100],
["Virgin", 100],
["Slim", 100],
["Elegant", 25],
["Clumsy", 25],
["Impersonal", 15],
["Magic Gift", 5],
["Kuudere", 45],
["Ane", 85],
["Deredere", 100],
["Well-mannered", 90],
["Ill-mannered", 100],
["Serious", 25],
["Frigid", 15],
["Divine Creature", 100],
["Light", 100]
],
"force_location": false,
"force_status": false,
"occupations": ["Warrior", "Service Girl", "Stripper"],
"blocked_traits": ["Extremely Jealous"],
"attack_skills": {
"FistAttack": 1
},
"magic_skills": [
]
}
]
{
"id": "Vicious",
"desc": "If there is a way to do harm to someone, she will find it.",
"block_traits": ["Virtuous"],
"mod_skills": {"oral": [-0.1, -0.05, 0], "service": [-0.02, 0, -0.03], "bdsm": [0.02, 0, 0.03]},
"character_trait": true
},
{
"id": "Virtuous",
"desc": "She is happy as long as she is able to help to anyone.",
"block_traits": ["Vicious"],
"mod_skills": {"oral": [0.1, 0.05, 0], "service": [0.02, 0, 0.03], "bdsm": [-0.02, 0, -0.03]},
"character_trait": true
},
Just independently sending teams to a testing location inside SE where they get items and meet enemies would be a good start :)
Just got this rchar with both Vicious and Virtuous traits ::)
Just got this rchar with both Vicious and Virtuous traits ::)
renpy.call("interactions_character_doesnt_want_bad_item")
Most likely it was a victim of mass renaming of some kind :D
File "game/library/screens/main_screen.rpy", line 37, in script
$ pytfall.world_events.next_day() # Get new set of active events
File "game/library/screens/main_screen.rpy", line 37, in <module>
$ pytfall.world_events.next_day() # Get new set of active events
File "game/library/events/classes - events.rpy", line 142, in next_day
if event.tpd and not event.resolve_tpd():
File "game/library/events/classes - events.rpy", line 270, in resolve_tpd
if len(matched_days) < self.tdp[0]: return True
AttributeError: 'WorldEvent' object has no attribute 'tdp'
Yeah, there were another typo further...
times_per_days=(2,6) this one should run event 2 times per 6 days. I figured it means that after some time the event will return, turns out you can wait 30 days and it never will become available again. Is it intended? I can't tell based on comments, and even if it is, it should be changed, otherwise this argument is useless.
Yeah, I think it works now.
When you are being attacked after using looking around option, you have to manually hide location screen, like hide screen main_street, otherwise all gui will remain there, right in the BE.
But if you don't know where the battle was started, ie locations=["main_street", "city_parkgates", "forest_entrance"], you don't know which screen should be hidden. What am I supposed to do then? Can't BE automatically hide gui by itself, for that matter?
scene
renpy.scene(layer="screens")
scene expression "bg " + event.label_cache
renpy.scene(layer="screens")
File "game/library/interactions/GM - negative.rpy", line 64, in script
python:
File "game/library/interactions/GM - negative.rpy", line 67, in <module>
result = run_default_be(enemy_team, background=back)
File "game/library/interactions/function - interactions (GM).rpy", line 388, in run_default_be
battle.start_battle()
File "game/library/be/core.rpy", line 163, in start_battle
renpy.with_statement(self.start_sfx)
File "game/library/be/screens.rpy", line 192, in execute
screen battle_overlay(be):
File "game/library/be/screens.rpy", line 192, in execute
screen battle_overlay(be):
File "game/library/be/screens.rpy", line 195, in execute
frame:
File "game/library/be/screens.rpy", line 199, in execute
has viewport:
File "game/library/be/screens.rpy", line 202, in execute
has vbox
File "game/library/be/screens.rpy", line 203, in execute
for entry in reversed(battle.combat_log):
NameError: name 'battle' is not defined
Can't it be forbidden globally for gold to be negative?
Really? What kind of cases?
hero.take_money(amount, reason)
char.give_money(amount, reason)
if hero.take_money(1000000000**10000000, reason="F*cking Cheater Test"):
"Yeah, right... you 'broke the bank'..."
else:
"You don't really have that much..."
The text spacing issue can be mitigated using the adjust_spacing style property, but is fundamental to text that can change its shape with the size of the window.
https://www.renpy.org/doc/html/style_properties.html#style-property-adjust_spacing (https://www.renpy.org/doc/html/style_properties.html#style-property-adjust_spacing)
sorry about using wrong place, just trying to understand renpy fullyYou can freely post here questions about renpy/python, I do it all the time :D
Could you add a field for consubales which is the name of a label where the game should jump if the item was used? Will help a lot for creating complex items. To avoid conflicts, it could just overwrite any other items effects if exists. Of course it still should affect the one who used the item, ie character or MC.
Well, in fact I wanted it for events too. Not interaction module type of events, more like VN type of events.
At the character equipment screen switching between girl and hero inventories resets items filter. Is it intentional or just happened to be like that? Because it's a bit inconvenient.
Yeah, ideally they should have multiple copies of every item.
Cherry-Wood committed 17 hours ago
Jump_to_label useful for events, but not for difficult items logic. Because for the latter we should stay on the items screen, and also know who used the item.
By items with complex logic I mean (purely for example) an item that gives a random trait to character, but nothing to MC. It probably requires a field that runs a function, since calls might be unsafe.
Btw added effects don't work for skills modifiers :)
I'm building an rchar with build_rc. How can I specify her level? Simple $ new_slime.level = randint(10,25) doesn't work.
def build_rc(id=None, name=None, last_name=None, pattern=None, level=1, add_to_gameworld=True):
''' Creates a random character!
id: id to choose from the rchars dictionary that holds rGirl loading data from JSON files, will be chosen at random if none availible.
name: (String) Name for a girl to use. If None one will be chosen from randomNames file!
last_name: Same thing only for last name :)
pattern: Pattern to use when creating the character! (Options atm: Warrior, ServiceGirl, Prostitute, Stripper) If None, we use data or normalize in init()
level: Level of the character...
add_to_gameworld: Adds to characters dictionary, should always be True unless character is created not to participate in the game world...
'''
I need to know who used an item with jump_to_label for items that could be used by anyone.
Well, I tried it like "if char<>hero" after jumping from item, it gave me "NameError: name 'char' is not defined".
Char instance should remain bound to eqtarget variable.
I want to add an item which takes health from one character and later gives it to another one. There are two options, either it always will work with the same amount of health, like 100 for example, or it could take 30-50% of max health, in which case I will store taken amount in a flag (a list of variables, since there could be multiple items).
But the latter case will lead to inconsistency in items, until now items with the same id worked just the same, but with flags stuff items with the same id will work differently.
What do you think about breaking items consistency like that? Worth/not worth?
Fair enough. I'll try with exp then, take 1000, give 500. Will be useful for training fresh chars.
I'm not talking about losing levels. They just will need more exp for the next level, assuming that it is possible to reduce exp (never tried it).
I don't like this... especially because it will mess up and make the added effects I worked for so long at for char equip screen inconsistent.Actually, turns out it can be done elegantly enough even with jumps.
Actually, turns out it can be done elegantly enough even with jumps.
My concerns were items that restore something completely, like health. That would be eqtarget.health = eqtarget.get_max("health"), which is impossible to do with normal items system, it only can be emulated by giving 100000 health, which is not looking very good.
Hm. Could it be possible to include MC into ceffect effects if needed? I mean, when you use an item that heals everyone in the building, and even equipment screen shows that your health should be restored, but in fact it heals only characters, it looks odd. Either that, or I'll add a script that heals MC too via jump_to_label.
Why not?Can't guarantee full heal for anyone who has more than 10000 hp. Doesn't matter atm, might be a problem in the future.
"ceffect": "allgirls" doesn't do anything at all :(
I think negative luck wasn't a good idea from the viewpoint of design. We don't show min values in gui, so when a character has 0/50 or 10/50 luck, it does not look like a high value, while in fact it is.
def get_attack(self):then
"""
Very simple method to get to attack power.
"""
a = self.source
if any(list(i for i in ["melee", "ranged"] if i in self.attributes)):
attack = (a.attack + self.effect) * self.multiplier # TODO: ADD WEAPONS EFFECTS IF THIS IS A WEAPON SKILLS.
elif "magic" in self.attributes:
attack = (a.magic + self.effect) * self.multiplier
else:
attack = self.effect + 20
return attack
def default_damage_calculator(self, t, attack, defense, multiplier):Or they are different multipliers?
damage = 0
# Calculate damage same as usual
if (defense < 1):
damage = attack * 1.5
else:
damage = (attack/defense) + 0.5
# Get a random number between 0.8 and 1.2
rand = (random.random() * 0.4) + 0.8
damage = int(float(damage) * multiplier * 10 * rand)
return damage
def effects_resolver(self, targets):
Case? I used them many times...Ah, it's because some of them don't have piercing=True. I thought ranged type is enough for everything.
# Magic/Attribute alignment:I know what it does in general, but it's too confusing for me to make sure that it works as intended, so it's up to you if something is broken here :)
for al in attributes:
# Damage first:
i = {}
# @Review: We decided that any trait should influence this:
for e in a.traits:
if al in e.el_damage:
i[e.id] = e.el_damage[al]
if i:
i = sum(i.values()) / len(i)
if i > 0.15 or i < 0.15:
if i > 0:
effects.append("elemental_damage_bonus")
elif i < 0:
effects.append("elemental_damage_penalty")
multiplier += i
# Defence next:
i = {}
for e in t.traits:
if al in e.el_defence:
i[e.id] = e.el_defence[al]
if i:
i = sum(i.values()) / len(i)
# From the perspective of the attacker...
if i > 0.15 or i < 0.15:
if i > 0:
effects.append("elemental_defence_penalty")
elif i < 0:
effects.append("elemental_defence_bonus")
multiplier -= i
In doa quest there is a fight with MC+guest character vs other character, no matter the MC team. Another case of not showing the gui.
This has to be changed.
cant find are Prostitutes reference ( with clothing on ) lolI think something like these will do
Didn't have internet at work and at home the whole week until yesterday evening, aside from expensive and slow mobile one -_-
I think something like these will do
https://www.dropbox.com/s/zju7ytf074cofk9/03A5-nn-e2-ec-c4-l2-pr.jpg?dl=0 (https://www.dropbox.com/s/zju7ytf074cofk9/03A5-nn-e2-ec-c4-l2-pr.jpg?dl=0)
https://www.dropbox.com/s/yuflkadbf8oaax1/0178-nn-eb-c4-l2-pr.jpg?dl=0 (https://www.dropbox.com/s/yuflkadbf8oaax1/0178-nn-eb-c4-l2-pr.jpg?dl=0)
https://www.dropbox.com/s/uk585zchc5bun2l/0190-nn-e6-c4-l2-pr.jpg?dl=0 (https://www.dropbox.com/s/uk585zchc5bun2l/0190-nn-e6-c4-l2-pr.jpg?dl=0)
https://www.dropbox.com/s/vmwy9zclowz74f3/0198-nn-e5-c4-l4-le-pr-pc.jpg?dl=0 (https://www.dropbox.com/s/vmwy9zclowz74f3/0198-nn-e5-c4-l4-le-pr-pc.jpg?dl=0)
https://www.dropbox.com/s/tihn0seo3h28uby/0528-nn-ee-c4-c9-l4-le-pr.jpg?dl=0 (https://www.dropbox.com/s/tihn0seo3h28uby/0528-nn-ee-c4-c9-l4-le-pr.jpg?dl=0)
Are you thinking something like this?
https://www.dropbox.com/s/wkog4qwmwscn5cg/sample-73cc4683401382a2cc1112efdc794d3d.jpg?dl=0 (https://www.dropbox.com/s/wkog4qwmwscn5cg/sample-73cc4683401382a2cc1112efdc794d3d.jpg?dl=0)
Xela, take a look at be\core.rpy. Healing spells somehow were broken during rewriting formulas, "with get_attributes_multiplier() takes exactly 4 arguments (3 given)".
Too bad you also canceled all my pushes for the last 4 days or so with "Git went crazy" commit.
I thought I just reverted on a merge, gonna take a look into that tonight.I restored my code, but I think you reverted the wrong part. Changes for buildings rpys remained intact, while BE files reset, you probably wanted it the other way.
More Detail ( cloth warps around rings and edge has different color and thickness )Looks awesome.
Hmm anyone has Nuse picture ( Hats, shoes, dress ) ? im going to do those nexthttps://www.dropbox.com/sh/5g068hvjr3j27am/AADOA2tJimjUY850VE9mnApIa?dl=0
Rest - Whore - Service - Guard+ Stripper and Manager. Service can be waitress or cleaner. Guards can be warriors, mages, or assassins.
Xela, are you sure about vitality always at 300 no matter the level?
stats = {Remind me the meaning of this dict. It's about mines and maxes, but it has no comments, so I don't remember what is what.
'charisma': [0, 0, 100, 60],
'libido': [0, 0, 100, 100],
'constitution': [0, 0, 60, 40],
'joy': [0, 0, 100, 200],
'character': [0, 0, 100, 60],
'reputation': [0, 0, 100, 100],
'health': [100, 0, 100, 200],
'fame': [0, 0, 100, 60],
'mood': [0, 0, 1000, 1000],
'disposition': [0, -1000, 1000, 1000],
'vitality': [300, 0, 300, 500],
'intelligence': [0, 0, 100, 60],
'luck': [0, -50, 50, 50],
'attack': [0, 0, 60, 40],
'magic': [0, 0, 40, 30],
'defence': [0, 0, 50, 40],
'agility': [0, 0, 35, 25],
'mp': [0, 0, 40, 30]
Remind me the meaning of this dict. It's about mines and maxes, but it has no comments, so I don't remember what is what.
Wait a sec, it's a legacy code. We have no mood or libido. My bad.
[stat, min, max, lvl_max] as value.
This, comments are in the stats class, it's 300 lines by itself, we really went over the board there :)Why there are two similar dicts for stats in the same file, with different numbers?
Another Waitress typeLooks great :)
Why there are two similar dicts for stats in the same file, with different numbers?
Hello everybody. I downloaded the game here https://github.com/Xela00/PyTFall
, but in the archive there is no .exe file or something like that. How and whether you can run the game?
...
Waiting on your word to start...
The premade armors/clothes are awesome. I never played those games, but I played Skyrim with mods for armor/clothes from those games, so I know for sure how cool they are. If it's faster and easier to convert them than create armors/clothes based on pictures, why not.
Dark i know you did select a few in the past but it was for general clothes.. can you do the same for the 3 armor types i need for warrior class ?Hang on, it will take some time.
Also for the arena.. do you have animation for the sprites ? like idle animation, slash, arrow/gun shooting ?
If you dont have it yet but plan on having those let me know
Xela, could you add support for AP changing for traits?
I want it only for the body traits. Lighter body type will provide a bit less vitality but a bit more AP. Constitution in this case is not suitable, it destroys the meaning of this change.
I forgot to ask for the pack to be complete im missing expressions ( character head left of text window also if you have something define for profile image dimensions )and battle sprites.. can you give me the exact size you use for those as i would really dislike seeing my work distorted with resize..
self.show("portrait", resize=(120, 120))
def get_sprite_size(self, tag="vnsprite"):
# First, lets get correct sprites:
if tag == "battle_sprite":
if self.height == "average":
resize = (200, 180)
elif self.height == "tall":
resize = (200, 200)
elif self.height == "short":
resize = (200, 150)
else:
devlog.warning("Unknown height setting for %s" % self.id)
resize = (200, 180)
elif tag == "vnsprite":
if self.height == "average":
resize = (1000, 520)
elif self.height == "tall":
resize = (1000, 600)
elif self.height == "short":
resize = (1000, 400)
else:
devlog.warning("Unknown height setting for %s" % self.id)
resize = (1000, 500)
else:
raise Exception("get_sprite_size got unknown type for resizing!")
return resize
http://moogleoutfitters.deviantart.com/art/TERA-Online-Samael-549237651?q=gallery%3AMoogleOutFitters%2F45789277&qo=285 (http://moogleoutfitters.deviantart.com/art/TERA-Online-Samael-549237651?q=gallery%3AMoogleOutFitters%2F45789277&qo=285) (a male version, but nothing prevents it from be used for females after changing figure)
I can prolly adapt the system to work with AP as well but still, you cannot add "little" bit AP, steps in AP are huge compared to steps in vitality.Let's see. There is a clear difference between Lolita and Manly body types. I don't touch here things like undead or robotic body, they have their own traits. The starting amount of vitality should be different for these traits. Atm Lolita has 100 and Manly 300 vitality from the beginning.
elif effect == "Pessimist":It should very quickly make joy minimal, but nothing happens after several turns. I suspect effects are afk, no wonder it didn't worked when I tried to create an effect which adds AP ::)
if self.joy > 20:
self.joy -= 50
But while it makes sense to have different vitality because of very different (and unchangeable because it's limited by pictures) body types, it makes lesser body types less beneficial, with no
significant advantages. AP is one of the most simple ways to make them more beneficial.
Hmm.. completely forgot about arena character poses.. like normal guard / defend / cast / idle.. those should cover all the current menu.. i just cant find images that shows good ones to create the poses..
Even if not every accessory/items/armor types are shown in BE sprites weapons are really the bare minimum.. and i can add them to existing BE sprites if needed if not redo it all...
with my clothing test for equipment doll i just put a transparent layer on top of normal picture with the missing weapon and its done
For tagging I wrote a guide here http://www.pinkpetal.org/index.php?topic=3533.0 (http://www.pinkpetal.org/index.php?topic=3533.0)
initin a separate file if you use a custom animation and then
image fire_1 = FilmStrip('content/gfx/be/filmstrips/fire_1.png', (192, 192), (5, 4), 0.1, loop=False)
python:inside a label you are gonna call.
SimpleMagicalAttack("Fira2", menu_pos=1, attributes=['magic', 'fire'], effect=20, multiplier=1.6, mp_cost=7, range=4, desc="Ignites the air in a limited area.",
attacker_effects = {"gfx": "fire_1", "sfx": "default"},
main_effect={"gfx": Transform("fire_2", zoom=1.5), "sfx": "content/sfx/sound/be/fire4.mp3", "duration": 2.0, "aim": {"point": "bc", "anchor": (0.5, 1.0), "yo": 40}},
target_sprite_damage_effect={"gfx": "burning", "initial_pause": 0.1, "duration": 1.3},
target_death_effect={"gfx": "dissolve", "initial_pause": 0.7, "duration": 1.2})
char.attack_skills.append("Fira2")
I don't see any problems withThanks! I used the same code, but my problem was that I had SimpleMagicalAttack entry in init but thats too early for battle_skills dict to be initialized - when I put that in _start_id label, it works fine.
For this 1 i made another without the bottom teeth like the drawing but i thing lower lips should be more like a U shape than a V.. tell me what you think about itHm, I like a V form more here.
Also lots of pictures i found have the girl sitting or other poses.. do we need to restrict those to represent resting or other stuff like that ?The system welcomes almost any pictures. Sitting poses, depending on circumstances, can even be used for both resting and profile tags. For example this (https://www.dropbox.com/s/ytz2r9ic5o7z309/00C9-nn-e6-c1-l4-le-pr-pc-a6.jpg?dl=0) one, which also has eating tag. The character is relaxed, but it's not like she's sleeping or something.
Also i really have a hard time finding profile with the right expressions.. as im after standing and with face angle that permits the eyes to look at you.. (to make portraits from those later)Where do you search for them? I mean, the best way is to download big packs, such as touhou, persona, naruto or sailor moon, or a few random packs, and use the tagger mask option to find emotions you need. It allows to instantly find the tag you need.
Hmm iv been browsing https://chan.sankakucomplex.com/ (https://chan.sankakucomplex.com/) as i only have 4 packs..Hmm, interesting. It might have pictures I don't have in my packs, I mostly use websites listed here (http://www.pinkpetal.org/index.php?topic=3684.0).
do you have samples of anime eyes ( open/closed/blush/and so on.. ) so i could see how they work.. i tryed something custom on the happy emotion but doesn't look right lol..Sadly, I'm not an artist :D
Thanks! I used the same code, but my problem was that I had SimpleMagicalAttack entry in init but thats too early for battle_skills dict to be initialized - when I put that in _start_id label, it works fine.
Strangely it worked that way in alpha and that confused the hell out of me.
Might be best to save this one for in pain i dont have yet
https://www.dropbox.com/s/vkxh61ca2yp4v4x/0140-nn-e9-eb-c1-cf-l3-l9-pr-pa.jpg?dl=0 (https://www.dropbox.com/s/vkxh61ca2yp4v4x/0140-nn-e9-eb-c1-cf-l3-l9-pr-pa.jpg?dl=0)
And this one for scared
https://www.dropbox.com/s/bytz4mtif9jqj65/0119-nn-e9-c2-l3-l9-pr.jpg?dl=0 (https://www.dropbox.com/s/bytz4mtif9jqj65/0119-nn-e9-c2-l3-l9-pr.jpg?dl=0)
There is another update for renpy, therefore I assume it's safe now to fix all screens?
Are there changelogs for prereleases btw? I only see them for releases (https://www.renpy.org/doc/html/changelog.html).
I don't get the meaning of local labels from the last prerelease. How are they different from normal labels? There is nothing in the provided example that can't be done via normal labels.
label next_day:
label next_day.controls:
label next_day.end:
If you wish to rest from jobs, you can code your own proposition from here (http://www.pinkpetal.org/index.php?topic=3707.msg39696#msg39696). Ie support for defaultish animations for warriors skills based solely on coding and single attack sprite.
Yeah, I don't really remember what I planned there exactly. We have a lot of animations for combat attacks as well so they could be used, gonna take a look at that whole thing.Universal algorithms for animations that can be used for any type of weapon, based on one simple png sprite. Like multiple hits one after another. I could come up with list of examples if you willing to code it after all.
Universal algorithms for animations that can be used for any type of weapon, based on one simple png sprite. Like multiple hits one after another. I could come up with list of examples if you willing to code it after all.
what matters here is.. do they look alright as if they are not i need to change them now ( later is too late as i would have to rework everything in between )Nothing wrong with them at all, I'd say they are perfect.
I dunno, it's hard to imagine. But the issue 170 still stands, no matter what kind of animations we'll have.
The magic dodges look absolutely ridiculous, I wish you'd remove them :( They pretty much all will require some sort of interventions with code and time controls.Let's say I remove magic evasion. Or even better, replace it with resistance, when character manifests protecting barrier instead of dodging, I bet it will look much better than dodging spells.
this can quickly become another 500 lines of if/else code and weeks of dev time cause magic is always bound to a character while weapons can be changed with a click of a mouseI don't know about 500 lines, but if you want arrows attacks to be available for sword users, it will be a disaster. I don't even mean coded attacks, I'm talking about unique animations from dropbox. Some of them clearly have arrows or bullets, some look like a sword or an axe. We have no choice but to bind at least some skills to specific weapons types, or dozens high quality animations will be useless to us, and this is a huge waste. And if it is supported, we might as well use it for some coded animations too.
What do you think extra attacks should be bound to? Level? Experience? Classes? Weapons as they are now (like some weapons allow a single attack, some allow two or three and etc)??I'm thinking about adding either weapon skills (skills like oral, I mean) or leveled traits (aka WM EX) to support specific weapons. Pretty much like Slave Maker 3 has a skill for every weapon type. So if a character good with swords will have high level of sword skill and certain BE swords skills will be unlocked for swords.
Let's say I remove magic evasion. Or even better, replace it with resistance, when character manifests protecting barrier instead of dodging, I bet it will look much better than dodging spells.
Magic skills in terms of code are not different from weapon skills. Should evasion not work against weapon skills too? If so, then what's the point of it? It will be nearly useless if it'll work only against normal attacks which are already weak to begin with.
I don't know about 500 lines, but if you want arrows attacks to be available for sword users, it will be a disaster. I don't even mean coded attacks, I'm talking about unique animations from dropbox. Some of them clearly have arrows or bullets, some look like a sword or an axe. We have no choice but to bind at least some skills to specific weapons types, or dozens high quality animations will be useless to us, and this is a huge waste. And if it is supported, we might as well use it for some coded animations too.
I'm thinking about adding either weapon skills (skills like oral, I mean) or leveled traits (aka WM EX) to support specific weapons. Pretty much like Slave Maker 3 has a skill for every weapon type. So if a character good with swords will have high level of sword skill and certain BE swords skills will be unlocked for swords.
In either case, game is not really combat centered, we're making too much effort here.I dunno, we have simulated battles everywhere. Brothels fights, SE, possibly arena.
- Default Attack skills that are enabled based of a skill "stat" value as a specific weapon is equipped.Yeap. For basic attacks it's stuff like double attack or powerful attack, any weapon can do it if the character is a capable fighter. It can be tied to character level and base class if you don't want to bother with skills, not a big deal.
- Special Attack skills that are weapon bound (Ice/Fire Sword/Axe/Bow/Gun and etc. animations we have in db).
That will require a controlled system to add/remove the skills of some sort, I need to make sure we have checks on skill changesA part of issue 170... Atm characters have all existing weapons attacks no matter what they equip, it's not how BE should work, even if we don't use advanced weapon skills at all.
So another huge move towards the combat oriented game, with moar skills, checks and code oriented around combat :)I propose an alternative then. Special animations, like energy swords that can be used only with a sword, we tie to specific weapons only. Ie a rare sword for a sword based animation. I believe items system should support it already, at least to some extent.
And special attacks should be learned just like spells, via teachers or scrolls.
Like I said, we can avoid tying skills to weapons if we never use too specific animations. This way we don't care what kind of weapon character has, s/he simply uses all skills s/he knows. Well, except melee/ranged issue, but we can't possibly merge them into one, they are very different already due to rows system.
And specific animations we'll use for skills added only by weapons. I recall there is already a system in place which can add a battle skill if you equip an item and remove it if it's unequipped.
Yeap. A matter of 2 minutes and excellent control over skills list with minimal coding, with more powerful, let's say, bows having wider list of bows skills.
I never tested it before though, I mean the system which adds and removes skills when you equip and uneqiup something. I know that scrolls work, but they give spells permanently.
Well, it doesn't cancel out generic code based skills. Although we might use the same system for them too.
Looks very good. Sounds however not so good without multiple sounds.
I pushed possible animation for resist. That stuff should surround the target when s/he resists a spell instead of dodging it via dodging animation. I can replace formulas and possibly add resistance stat to items, but not show this animation around a target inside BE :)
With the new eyes control i just made it finally looks fine lol.. ( do we need special eye types?.. although im not sure they will look good in 3D like the >.< ones)At very least different forms and colors of iris and pupil are needed. Like vertical pupils for a catgirl. Stuff like comical facial expressions usually doesn't look good in 3d.
Perhaps it's time to stick with one specific version of renpy? I'm pretty sure that's what professional devs who release VNs in steam do.
At very least different forms and colors of iris and pupil are needed. Like vertical pupils for a catgirl. Stuff like comical facial expressions usually doesn't look good in 3d.
Anime mouth types.. happy/sad Base
(https://s20.postimg.org/t2z4rcn09/Mouthhappyanimetype.png) (https://postimg.org/image/t2z4rcn09/)(https://s20.postimg.org/50iawh6d5/Mouthsadanimetype.png) (https://postimg.org/image/50iawh6d5/)
Im not gonna try the cat mouth now as it seem complicated lol.. but i can change the size/shape for iris/pupils and their color if needed
Finish one char first, next one can be a cat girl or something... Do you have a set somewhere (like Dropbox)? Like all that's been done so far?
Mouth is too open for happy/sad expression. She looks like she's about to say something she'd enjoy saying on the first pic and like she's about to scold someone on the second :)
Hmm. If you look at https://postimg.org/image/od972qvzt/ (https://postimg.org/image/od972qvzt/) and at https://postimg.org/image/ien5fh51x/ (https://postimg.org/image/ien5fh51x/) you can see the difference in the upper lip form. I mean, the upper lip cannot be like this (https://www.dropbox.com/s/zqo767aeb6rbacu/1a.jpg?dl=0), it can only be like this (https://www.dropbox.com/s/i88xs4zmwor3387/1b.jpg?dl=0).
Yeah, 3d makes it look kinda unnatural.
i guess it could be simplified to https://cs.sankakucomplex.com/data/d2/13/d21365342ea08d6709a9a94d52dbfaab.jpg?5478552 (https://cs.sankakucomplex.com/data/d2/13/d21365342ea08d6709a9a94d52dbfaab.jpg?5478552) in 3d and still get the right expressionYeap, I think that one will look good even in 3D.
So, can I add new animations, or better not until the bug with new renpy will be sorted out because it's possible that all animations must be redone now?
Soul Sword. It's near the healing spells, since the the game doesn't have a tab for melee "magic attacks".
Ranged doesn't work too.
SimpleAttack("Soul Sword", attributes=["ranged"], critpower=0.4, range=3, effect=4, vitality_cost=1, main_effect={"gfx": Transform("soul_sword", zoom=1.7), "sfx": "content/sfx/sound/be/sword.mp3"})I tried to make it based on SimpleAttack. It only shows the first frame now...
No, first. And I don't even need to use it once, like with the spells bug. I pushed it again.
The difficult part is to process more than one damage source. Like 50/50 light and physical, or 33/33/33 fire/air/darkness. Meaning:
- attack, defense and damage parts calculated as usual, without changing anything
- then damage output is divided equally between all sources attributes, like 50/50 for fire/air
- check for absorption and resistance for elemental parts, individually
- for those that were not absorbed or resisted checks for elemental multipliers, I mean those inside the get_attributes_multiplier function, individually too
- after calculations, deal all types of damage one after another, and report about it in the log
Fights at high level look redicoulous because everything is dodged. Whatever you did with spells, high level spells seem to damage opfor, even if no such thing is reported.
Fights at high level look redicoulous because everything is dodged.
Damage is reported, even though report also states that spell was reflected...
Ok, characters, traits and items now have evasion and resistance stats. They are pure chances of success, so we should be careful about giving big bonuses to them. This is also true for BE testing mod, where you give insanely huge bonuses to ALL stats including these two,making the chances to dodge and resist 100%.
Dodging can be prevented by making critical hit (based on pure luck, 35% with max possible luck), but successful dodging prevents any damage. Resistance cannot be prevented (maybe later, after the release, it will be different), but if successful it only changes initial damage multiplier from 1.0 to 0.65, removing 1/3 of spell damage. All elemental bonuses still work as usual though.
high level spells seem to damage opfor, even if no such thing is reported.Opfor?
Opfor?
An opposing force (abbreviated OPFOR, used in the United States and Australia) or enemy force (used in Canada) is a military unit tasked with representing an enemy, usually for training purposes in war game scenarios.
Btw ideally resistance shield animation should be tied to the spell length, and be shown as long as spell animation goes on.
It's used a lot in online military team shooters I used to play back in the day...Ohhhkey, the meaning of the sentence still evades me. Some spells damage enemies without reporting in the log or what?
Already works this way, doesn't it? You can clearly see that when you're using spells of fast/long duration.I mean spells like fireball, the shield begins to work immediately, not when the fire ball comes into contact with the target. Not a big deal, of course.
Ohhhkey, the meaning of the sentence still evades me. Some spells damage enemies without reporting in the log or what?
I mean spells like fireball, the shield begins to work immediately, not when the fire ball comes into contact with the target. Not a big deal, of course.
Deflected and damage. I mean, we don't have a concept for this so there is no way for me to know if it's ok?Deflecting removes 1/3 of damage, it still can kill. I suppose you could disable deflecting if successful deflecting still won't save the target, if it bothers you.
Like only a part of the damage was reflected or something.Reflecting damage back is a nice option too, but only post beta or release.
image soul_sword:How can I use anchors for animations like that? Simply adding anchor (0.5, 0.5) in the beginning does nothing.
"content/gfx/be/animations/soul_sword/soul_sword_1.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_2.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_3.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_4.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_5.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_6.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_7.png"
pause 0.1
"content/gfx/be/animations/soul_sword/soul_sword_8.png"
pause 0.1
How can I use anchors for animations like that? Simply adding anchor (0.5, 0.5) in the beginning does nothing.
I have your last push, and I can see that in BE testing mode characters still have 100 evasion and resistance.
Might be simpler to webm them using adobe soft, that was very simple and intuitive.I recall problems with alpha masks you did not solved... Far from intuitive and simple.
There is no visible difference between anchor (1.0, 1.0) and (.0, .0). I also don't see examples of using anchors with that kind of animation in BE, so my guess is it's not supported.
I recall problems with alpha masks you did not solved... Far from intuitive and simple.
Xela, add tooltips for non magic attacks inside BE. They all have cost and description after all.
I figured webms more or less, pushed proper soul blade skill.
I mean spells like fireball, the shield begins to work immediately, not when the fire ball comes into contact with the target. Not a big deal, of course.
Xela, add tooltips for non magic attacks inside BE. They all have cost and description after all.
I thought about adding waiting option that restores vitality.
Pushed fire based skill. Since it has ranged and fire attributes, it should do 50/50 physical/fire damage. It's not atm. Your turn :)
Going to look into shield timings for P2P attacks next.
I want to show a webm twice or more in the row. How could it be done without making a new webm?
I think it's working. Just for fireball, same thing needs to be added to other similar spells in definitions.Done, works very well for some non P2P animations too.
Something has to be done about Mudslide spell. It looks terrible at the upper edge.
Odd phrasing...I like how it sounds :)
- Armor/Equipped Items/Weapons damage/defence mods.I'm not sure what exactly you mean here. In general I think it would be good for armor and weapons to have absolute damage and defense values that increase or decrease resulting damage directly after all usual calculations, ie -5 fire damage for an armor. But it might be too much trouble with little result, since it means adding moar (hidden) stats for all characters.
- Using (some) Items in Combat.For the purpose of balance everything but food has cblock fields. They also should work inside SE to prevent spamming 100 healing potions per day.
- Breakers (stacked damage under specific conditions, like Fire Weapon + Fire Alignment + Enemies Water Alignment + Critical Strike, for one example...).Any weapon skill has a chance to be a critical one or to be evaded. Any spell has a chance to be deflected (except inevitable ones) and cannot be dodged or hit critically. This is the part we have already.
- Skills that cannot be Dodged or Evaded.Yeap, inevitable skills cannot be dodged too.
- Buffs (This one is a bit difficult cause I am not sure what a good (coding) strategy to buff is... but I do have ideas and if we want it now, we need to talk about it as well).Well, buffs/debuffs animations from db are awesome, would be a waste to ignore them. But I think it's too early, we should establish stable BE before adding such stuff. Maybe after beta...
I'll try to do one thing, if it doesn't work, it's not worth wasting time on, PyTom can prolly do it if we ask cause it sounds like a very appropriate feature for the engine.I'll tell you straightly what I need it for. Soul spear skill I added today is too short by itself, I already did the best I could in After Effects to make it longer. If we could launch it to the target 2-3 times, perhaps changing y coordinate a bit every time, it will look better.
I'll try to do one thing, if it doesn't work, it's not worth wasting time on, PyTom can prolly do it if we ask cause it sounds like a very appropriate feature for the engine.
I'm not sure what exactly you mean here. In general I think it would be good for armor and weapons to have absolute damage and defense values that increase or decrease resulting damage directly after all usual calculations, ie -5 fire damage for an armor. But it might be too much trouble with little result, since it means adding moar (hidden) stats for all characters.
Another possible option is to have base damage range on all weapons. Like 1-2 for a basic dagger. This range can be used for damage calculations to make them less dependable on attack and more on equipped weapon.
It means however that everyone should have damage range, even creatures who cannot use weapons, or npcs at arena who most likely don't even have equipped weapons. So it might be too much trouble too.
For the purpose of balance everything but food has cblock fields. They also should work inside SE to prevent spamming 100 healing potions per day.
Perhaps we should stay away from using items, at least normal ones. Or allow them to be used as long as cblock field works as it should outside of BE.
Any weapon skill has a chance to be a critical one or to be evaded. Any spell has a chance to be deflected (except inevitable ones) and cannot be dodged or hit critically. This is the part we have already.
Now, critical hit should only affect physical part of damage if there are multiple damage sources. Just like elemental traits affect only specific elements during damage calculations. Critical hits already cancel out any evasion (35% chance of crit hit at 50 luck), so even without full damage multiplication they are useful.
Elemental weapons... Yeah, it's something I wanted too. But seeing how we can have 50/50 physical/fire skills, the easiest way is absolute damage bonus in items json, such as +10 ice, affected by elemental traits as usual. This bonus adds to any simple attack or weapon skill.
Yeap, inevitable skills cannot be dodged too.
Well, buffs/debuffs animations from db are awesome, would be a waste to ignore them. But I think it's too early, we should establish stable BE before adding such stuff. Maybe after beta...
I'll tell you straightly what I need it for. Soul spear skill I added today is too short by itself, I already did the best I could in After Effects to make it longer. If we could launch it to the target 2-3 times, perhaps changing y coordinate a bit every time, it will look better.
I am thinking adding a new field to items, like be_ready. But maybe it's too early...If we allow certain items to be used limited amount of times outside BE but unlimited inside, we welcome players to attack low level goblins at arena, heal all party completely and run away, ignoring cblock limitations.
I'll tell you straightly what I need it for. Soul spear skill I added today is too short by itself, I already did the best I could in After Effects to make it longer. If we could launch it to the target 2-3 times, perhaps changing y coordinate a bit every time, it will look better.
image wemb_test:
MovieLooped(channel="main_gfx_attacks", loops=2, play="content/gfx/be/webm/moz_movie.webm", mask="content/gfx/be/webm/moz_mask.webm")
pause 3.4
yoffset 100
pause 3.4
Can we seamlessly move webm while playing it?
Yeah, but we've been using AE for that, it has interface and more options... I don't remember how to do it exactly cause it was like half an year ago as it was tested last, but it worked well. Dark managed couple of animations perfectly fine just yesterday as well. ffmpeg also worked for me.
I use After Effects to create animation from png sprites, then send it to Media Encoder, which with webm plugin capable to render webms (After Effects alone cannot create webms).
For transparency we use masks created in the same way. You probably need them too. I mean, this (https://www.dropbox.com/s/gitprotg9yo4wg4/v.webm?dl=0) is animation, and this (https://www.dropbox.com/s/ix7xjs0sfgl9ez7/v_alpha.webm?dl=0) is transparency mask.
In theory mask is not needed since webms should support alpha. But my animations still have black background without masks ingame even with alpha enabled, so I suppose renpy itself wants the mask webm no matter what.
the problem with that solution is you have edges problems.. and it will ruin my work :p
What edges problems? Everything should work just fine...
I don't know... it just worked for me right of the bat, I still have the webm movies made with it. You can just upload the png sequence and Dark (who messed with this like yesterday, or I after a review of my projects in AE) can make the required animations.
?
You need to create two movies... One is the normal webm movie, default settings. Second is the same movie (called "mask") but you need to set png alpha channel to red channel of the movie (or do the thing that Dark does, simply setting all channels to Alpha, I think file size might be slightly bigger this way, but it's still a lot smaller than pngs).
Ren'Py will take the red channel from the mask movie and use it as an alpha channel for the first.
=========>>>
We do have auto-animation script in PyTFall as well btw. So you can just use pngs, size is the main advantage for webm with no quality loss.
=========>>>
You need the other piece of soft to make webms directly from AE, Dark mentioned it.
I just managed to create real webm with transparent BG without masks
Dark does this mean you have a working FFmpeg with working libs ? if so please zip and box it for meOf course not, I use Media Encoder with webm plugin for rendering, it covers all my needs.
Current animation functions do not support this stuff, or maybe they do, but we lack examples how it can be done. So I'll make all suitable webms for a start, then you'll have to take a look at the coding part.
That will work in Chrome and nowhere else...
well if they did it it means it should be possible to to the same kind of hack even for renpy..
Some animations require two or three webms at the same time. I wonder if there is a limit of how many webms can be played.
you need to set png alpha channel to red channel of the movie (or do the thing that Dark does, simply setting all channels to Alpha, I think file size might be slightly bigger this way, but it's still a lot smaller than pngs).It probably was fine for your Cataclysm spell because it was all red, but for animations with less red such mask is less accurate than needed.
It probably was fine for your Cataclysm spell because it was all red, but for animations with less red such mask is less accurate than needed.
Here a test..We usually use "pytfall" password for archives, but in your case it doesn't work, so I'm at loss here :)
We usually use "pytfall" password for archives, but in your case it doesn't work, so I'm at loss here :)
I think it works differently in After Effects. I set colors channels to alpha without rendering transparency. That results in black and white webm where pure white is alpha 255 and pure black is alpha 0. At this point doesn't matter which color channel is used by renpy for mask, since they all present in white color equally.
But if I disable some channels instead of including them into alpha, that might lead to not including parts of animation into the black and white webm, so renpy will not even see them.
Here a test..
https://www.dropbox.com/s/8sqjmygnnn9e95t/WEBM.rar?dl=0 (https://www.dropbox.com/s/8sqjmygnnn9e95t/WEBM.rar?dl=0) Run the html with chrome ( webm doesn't follow resize but you can drag it to where it should be if you do change the window size )
As for the webm itself its not a animation its a morphing from pose to pose and i asked blender to extrapolate the transitions.. but know that i see it can do all this i might make some real animations..
Its "Pytfall" mistakenly use caps P
Got it. Well, it works in Chrome and nowhere else. Even Firefox doesn't show it... there is not even a chance that we can show that in Ren'Py but we can make a masked movie from .png sequence or just used still .png frames and the background.
i would realy love to get my hands on the chrome transparency class code :p
the raw frame counts tops at 1.2k (526mb) so no way while webm is a few mb ( give us animated gifs back as webm is useless atm lol !! )
BS...
I've proven couple of hundred posts back that WEBM resulted in MUCH better colors and smaller size than .gif with the best encoding... look at our god damned animations, WEBM beats both .png sequences and .gif in quality, size or both.
You just make two damned movies, one as a normal .webm and the second one with alpha channel encoded to red channel of the movie. Two movies so far ALWAYS resulted in smaller size and better quality than a single gif! It's just a better, more modern format... there is no way around that plain and simple fact!
In this case we can't even use the image itself as a mask, like for some spells. It becomes too transparent.
Formats war... Just like apng was developed and mostly supported by mozilla :)
Yeah unless they fix it best would be masks.. but that needs 1 files right ?
I do agree only problem now is format will change for sure so does renpy code and in the end it might be hard to make everything work all the time i guess.. ill use Dark 2 webm to make compatible one now..
Yes you could...I tried it actually with the last lamoli example, the girl is half transparent in this case.
I tried it actually with the last lamoli example, the girl is half transparent in this case.
Im missing tired and indifferent expression/pose now.. do you have samples of those ? ( full body pose would be great )..
Packs are not deeply tested, it only could be done when many people will use packs and (hopefully) will report about unusual pictures logic. I'm sure there are errors, I spotted one just a few days ago in DOA pack, with straight picture tagged as a lesbian one.
Ok saw you reply too late already packaged the whole thing..
https://www.dropbox.com/s/giejnp8b5cvg3zy/Test.rar?dl=0 (https://www.dropbox.com/s/giejnp8b5cvg3zy/Test.rar?dl=0) (usual PW with small P)
contains the EA and the main rendered files 0 6 12 up to 54 ( folders are for the pose to pose transitions so not usable as image as its vertex moving without bone constrain it was intended to move facial expressions and not body parts ) but when needed i can make real animation with bones..
Dark could you use my files and give me the result EA file you get when its done ( it would be faster than me having to find out browsing related forums to find out how to do it )
What do you mean by result here? It all looks like it's ready for importing into media encoder.
Help me out here... we can load these to Ren'Py using my custom Animation class or using images system that come with the engine or creating .webm using AE. That is in no way a problem. There is in fact no problem here at all :)
There is a question: What do you want us to do with them? I would not mind creating a story for our only real custom (not "cured of greed" I mean) girl, it'll take time and some creativity. Dark already came up with a whole story line for Naruto Chars. That would prolly require story driven content though, not the other way around.
I always assumed that you could run the actual copy of the dev project? Outside of the dedicated story line, where do you imagine we use transitions between poses/moods. We can expand the system to be using it with jobs but it will look out of place... We can load these animation in any form, like webm, Animation class or image png sequence. It will all work (perfectly), I am just trying to figure out a use case. It's looks amazing, we just need to figure out where/how to use this content in the game.
===>>>
My point is: If you have any doubts about our ability to implement those animations in Ren'Py, they are unfounded. We can load them in a number of ways which will all work perfectly, without any glitches. Question remains: What so we do with them?
I meant how do you only use alpha on red channel for the 2nd webm
Here. (https://www.dropbox.com/s/hqy6fnf02o22e6p/Test.aep?dl=0)
I meant how do you only use alpha on red channel for the 2nd webm
Here. (https://www.dropbox.com/s/hqy6fnf02o22e6p/Test.aep?dl=0)
Simple project to test the webm: https://mega.nz/#!L0wQ2ArS (https://mega.nz/#!L0wQ2ArS)Decryption key ?
Decryption key ?
You need to make a guide on how to do this... you 3D ==> 2D adaptations are the best that I've seen...
Ok not sure how girl packs works anymore.. i have the Naruto pack and the example.rpy is using Hinata / Sakura / Tenten and i have the 3 of em into that pack.. but for some reason only hinata loads and both Sakura and Tenten gives error screens
I can already see that you have more folders than data files there. Some files are missing.
Nope, they were converted to webm, so I deleted them to not create duplicates. What, you want them back? It's not too late to restore them.
We create webms because it's a hell to work with maple animations manually due to custom alignment, but ok, I'll restore them.
After creating a few dozens I can say that in some cases animation requires truly custom alignment, unique for every sprite.
MC needs the list of battle stats. Probably the same as other chars.
Because, given time, you can infinitely increase any stats but luck, disp and possibly joy. The new two stats are strictly monitored (by me :) ) to not allow high values.
Specific traits and rare, powerful items also increase and decrease them, making a big difference between characters in battle. If tied to the same old stats, the said difference will be lost very soon.
We might need a function like SimpleAttack3X for some webms, if it's possible with renpy of course. Not right now, when I'll finish with converting to webms.
The polygon at MC screen is incorrect for luck.
Also, while you are at it, characters and MC stats need support for tooltips for a long time. That includes the polygon.
Looks a bit like a guy but otherwise it's a nice render. Did you finish the blond girl?
Hmm... I just googled the source:
- She needs to be paler.
- Lips got to be a little bit thinner.
- Eyebrows got to match the color of hair.
I don't know her from source but she looks ok to me otherwise.
Xela, take a look at Abnormally Large Boobs trait name in gui :)
Either you can fix it to be centered perfectly, or I change name to simply Large for example.
Here (http://no-info.no-ip.info/aa2/) are eyes textures and highlights, buttons at the top. If you can't access the website, use proxy (I have browsec plugin for firefox). Most textures are gray because the game that uses them can change their color on its own.
That's what I call her: https://postimg.org/image/v44u3j249/ (https://postimg.org/image/v44u3j249/)
Yeah, ironically most well known characters have many thousands various pictures and can easily get a high quality pack after 1-3 days of unhurried work.
I might have an idea though, there is a game series called Senran Kagura. Here it is on gelbooru (http://gelbooru.com/index.php?page=post&s=list&tags=senran_kagura_%28series%29&pid=0). It has quite a few very different characters, but at the same time not way too many pictures. I think it might be a good source of examples and will be a good rendered pack.
Omg, small neat numbers at the equipment screen turned into huge, unusable ones. That's not gonna work, Xela :(
Also, we don't have item field for non magic skills. I created a weapon skill and tested it via add_be_spells. It works, but adds skill to spells.
Umm, are you sure it's a correct link? I see a user profile with tons of DOA characters costumes, and DOA characters are extremely well known, so using their clothes is debatable.
http://saryta-chan.deviantart.com/art/Angela-Balzac-Windows-100-572563610 (http://saryta-chan.deviantart.com/art/Angela-Balzac-Windows-100-572563610)Well, in this particular case it's based on her story, she kinda has two bodies with different age according to wiki :)
to
http://saryta-chan.deviantart.com/art/Angela-Balzac-Adult-Windows-100-584814318 (http://saryta-chan.deviantart.com/art/Angela-Balzac-Adult-Windows-100-584814318)
If that goes for you i can do it.. but im concerned about common folks.. will they still like a pack like this..I dunno why you think people might not like it, it looks great.
I don't care much about characters age, you can use the one you prefer. We only decided to not support kids when we started the project due to sexual content involved.
I dunno why you think people might not like it, it looks great.
MC portrait becomes messed up once you enter MC equipment screen from MC profile.
target_damage_effect={"gfx": "battle_bounce", "initial_pause": 1.7},I mean, I know what all gfx effects do. But how could they shake if they are frozen? Or why there is generic death effect with initial_pause and stuff when target will disappear via dissolve anyway?
target_sprite_damage_effect={"gfx": "iced", "initial_pause": 0.6, "duration": 1.0},
target_death_effect={"gfx": "dissolve", "initial_pause": 1.0, "duration": 0.5}
I don't understand how this stuff works together.I mean, I know what all gfx effects do. But how could they shake if they are frozen? Or why there is generic death effect with initial_pause and stuff when target will disappear via dissolve anyway?
Just realized.. she looks tanned lol original was too yellowish but thats too dark now
can always be tweakened later..
Edit:
Just how 1 little thing changes it a lot and looks even closer to original..
(https://s20.postimg.org/4s42fsxh5/Asuka0.6x1.png) (https://postimg.org/image/4s42fsxh5/)(https://s20.postimg.org/tzeyg20l5/Asuka0x1.png) (https://postimg.org/image/tzeyg20l5/)
Death effect is how the target is destroyed, like exploding or disappearing.Targets disappear with dissolve if dead by default once the spell is over. What's the point of manual dissolve setting?
Maybe il try to give her a grown up body as well now she s a bit too chibi and ill use the DOA5 Senran Kagura clothing mod for thatYeap, she is a bit too short atm.
Targets disappear with dissolve if dead by default once the spell is over. What's the point of manual dissolve setting?
in a perfect world we would have changed all definitions by now (even some magic is skill defined in the old fashion).Should I still use P2P_MagicAttack and MagicArrows? Or they are obsolete and should be replaced with SimpleMagicalAttack somehow, or with some currently not existing function that you will add later?
Should I still use P2P_MagicAttack and MagicArrows? Or they are obsolete and should be replaced with SimpleMagicalAttack somehow, or with some currently not existing function that you will add later?
@Review: There may not be a good reason for this to be a magical attack instead of any attack at all!
From comments:
There are no other ways to show bow attack, I mean a real bow attack with bow and arrows. But at the same time comment suggests it cannot support non magic attacks.
With a more mature body.. ( looks less like a kid than before )
(https://s20.postimg.org/3okv6lapl/Asukamature0.png) (https://postimg.org/image/3okv6lapl/)(https://s20.postimg.org/3put00cjd/Asukamature1.png) (https://postimg.org/image/3put00cjd/)(https://s20.postimg.org/4gnj5sewp/Asukamature2.png) (https://postimg.org/image/4gnj5sewp/)(https://s20.postimg.org/5k7nhqzjt/Asukamature3.png) (https://postimg.org/image/5k7nhqzjt/)
(https://s20.postimg.org/8fkqom3jt/AsukaxPole.png) (https://postimg.org/image/8fkqom3jt/)
Also made 2 transfer models to port all the Senran Kagura and all the DOA clothing
Kinda looks like a hobbit now :D
With a more mature body.. ( looks less like a kid than before )I think she's still way too short to be accounted as adult. Although, in the game I played which they released in steam some time ago she's a schoolgirl, so it's fine.
1) Support for multielemental attacks, including physic+magic.
2) Item field for non magic skills.
3) Issue with gui, when equipment screen doesn't show which skills will be removed when you unequip items.
4) Weapons have fields like "attacks": ["SwordAttack"]. They mean that with that weapon character should have basic sword attack available. And without weapons with such fields only fists should be available.
I have the multielemental option :( Maybe for post-beta? Physic+Magic I'll try to do tonight.Well, I figured there is zero difference between physic+magic and N damage sources. But yeah, we at least need physic+magic, with physic part being able to use crit hits.
? We have one, don't we?For spells only. If used, the field adds even pure weapon skills to spells.
Prolly yeah, you want it done differently?Err, no. There is no such system as far as I know. But there should be.
is weird... I'll try to track it down.The thing is, we never had items which can be unequipped and give skills/spells when equipped. We only had scrolls as consumables, and they work with gui as intended.
- Rows.
The current rows system works like:
Melee can only attack the first row while being in the first row. Ranged can only attack the first row no mater its own row. Piercing can attack any row while being in the first row. Ranged+Piercing can attack any row no matter its own row. True Piercing ignores all row penalties if they exist, but does nothing else.
I think it should stay like that.
- Resources (MP/VP/Health)
Attack Power:
- Trait Modifiers? - if you mean stuff like damage = damage * 1.1 for warrior class trait, then yeah, it's an interesting idea.
- Rows - It might be a good idea to add attack power penalty for the second row in addition to reduced damage, to balance things.
Special Mods:
- Resistance <- We have Magic Immunity trait. It's supposed to provide immunity to all existing atm elements. I created an item which adds this trait, equipped it and attacked the character with magic. She died. Meaning your resistance does not work as intended!
- Multielemental attacks:
For testing I created a spell with both air and ice attributes. It ignores ice keyword completely, so I can say for sure that atm the system doesn't support such things at all.
We can live without magic+magic+magic... attacks right now, but at very least we need physic+magic for beta. Where physical part can be critical, magic part is affected by all target elemental defenses and weaknesses, and the attack can miss, dealing no damage at all in result. It also will require a unique attack power formula which includes both attack and magic parts.
- Gui cannot support items which add skills/spells when equipped. It just ignores this stuff, while it should show everything, simply because there are places in gui created exactly to show skills changes.
- Characters should have basic attack provided by equipped weapon, provided by "attacks" item field. And no other basic attacks.
Meaning after equipping a sword to unarmed character you'll lose fistsattack and gain swordattack, and vice versa. Since there are two weapons, character may have two basic attacks, yeah.
It also should support multielemental basic attacks. I mean, if you equip some fire sword, you'll get not a simple swordattack, but (currently not existing) fire_sword_attack which has both physical and fire attributes.
- We have add_be_spells field which adds spells. But we don't have a field for adding skills. While we do have "attacks", its purpose is to add basic attacks, not skills.
Yeah, it is a good idea to add all these basics to the default check method. It can be overwritten for special attacks.Just keep my algorithm intact, when non integer resources mean %, ie 0.5 vitality means 50% of max character vitality.
I didn't really want it to... was kind of hoping we could avoid that.We have many absolutely amazing animations made from multiple elements. We don't need it for beta at all, but we do need it for the release. So it might be a good idea to prepare ME code now instead of rewriting everything later.
I don't have a slightest clue why and don't fully understand what you mean here, I'll take a look anyway but prolly after BE update.Ah shit, I got it. I tested it with characters which have all attacks in the game due to being used in BE testing mode. In this case the system of showing skills just goes nuts. For normal characters it works fine :D
I am thinking a new "be" field which would be a dict, we may want a lot more than attack in the future. But we can also simply add fields as well... The thing is... feels (again) stupid and confusing, we're just doubling down on plain attack stat for which we have a cool mechanic in play that took weeks to design.Well, to be honest I don't like the system of double weapon -> double basic attack.
It's like with your new two evasion stats :(Aha. It used to be based on differences in agility and levels. Do you know what was going on in BE testing mode? Goblins coudn't do a thing without magic.
System is quickly becoming not just humongous but fucked up in a way where we breed stat after stats and bonus after bonus that do more or less the same thing. I'd really like to get rid of the new stats and add stuff like extra evasion mods just for BE through classes and items, calculating ability to evade based of agility.
Just keep my algorithm intact, when non integer resources mean %, ie 0.5 vitality means 50% of max character vitality.
Btw do mobs even have vitality and mp, or they are unlimited like in many games?
We have many absolutely amazing animations made from multiple elements. We don't need it for beta at all, but we do need it for the release. So it might be a good idea to prepare ME code now instead of rewriting everything later.
Ah shit, I got it. I tested it with characters which have all attacks in the game due to being used in BE testing mode. In this case the system of showing skills just goes nuts. For normal characters it works fine :D
Well, to be honest I don't like the system of double weapon -> double basic attack.
How about moving all weapons capable to attack to the main hand, and all others like shields and stuff to another one? No more issues with double attacks.
Aha. It used to be based on differences in agility and levels. Do you know what was going on in BE testing mode? Goblins coudn't do a thing without magic.
We can live without magic+magic+magic... attacks right now, but at very least we need physic+magic for beta. Where physical part can be critical, magic part is affected by all target elemental defenses and weaknesses, and the attack can miss, dealing no damage at all in result. It also will require a unique attack power formula which includes both attack and magic parts.
{
"id": "Magic Immunity",
"desc": "No damage from any magic.",
"resist": ["ice", "Water", "Fire", "Air", "Earth", "Electricity", "Light", "Darkness", "Healing"]
},
{
"id": "Magic Immunity",
"desc": "No damage from any magic.",
"resist": ["magic"]
},
- Mobs have the same limitations as any other char. You know this, you wrote their classes :)BE may ignore limitations for the enemy team, it actually does so in many games. That's why in jrpgs enemies never run out of mp, or in shooters with limited ammo enemies have unlimited ammo. Because often there is no way for them to replenish it, unlike the player.
It's mostly an items design thing, we can also just mass rename the slot if required. It's a good idea on many levels...Ok, I'll do that.
So? It a matter of balancing classes, not adding more stats to solve a simple issue.That's not about classes. Agility increases infinitely for any class, given time and/or levels
How is "melee" + "magic" + "fire" any different from "melee" + "fire" other that creating more core code and confusion?Hm? There is no "melee" + "magic" + "fire", such combination is impossible. I can't even imagine how to use one if it will be added :)
BE may ignore limitations for the enemy team, it actually does so in many games. That's why in jrpgs enemies never run out of mp, or in shooters with limited ammo enemies have unlimited ammo. Because often there is no way for them to replenish it, unlike the player.
There is another issue thought, with default attack type. If a character has a weapon on the battle sprite, then her basic attack should not be default fists, but the weapon she has. Therefore we need a field for basic attack (without weapon equipped) in character data files, which by default will be fists.
That's not about classes. Agility increases infinitely for any class, given time and/or levels
And if you want to replace resistance with intelligence, then we already have tons of magic related things tied to intelligence due to lack of magic defense stat.
And if you want to replace resistance with intelligence, then we already have tons of magic related things tied to intelligence due to lack of magic defense stat.
It also give me an option to make some items and traits better or worse by adding bonuses and penalties to the new stats. While giving bonus to intelligence pretty much increases everything about magic, bonus to resistance only increases resistance.
defense = round(target.magic*0.2 + target.defence*0.6 + target.intelligence*0.2)
Hm? There is no "melee" + "magic" + "fire", such combination is impossible. I can't even imagine how to use one if it will be added :)
So basically let's say I add there a new keyword, like "magic_weapon", which will lead to some another formula of attack and defense calculation, making magic a bit more useful for some (not all) skills. Because otherwise magic is pretty useless for pure warriors. That's the plan at least :)
We should already have that.But equipping a different weapon does not remove this default skill if it's not fists. And we already decided to get rid of double base attacks, up to the point of moving all weapons to the main hand.
No, base classes can stop that, slow it down or increase the rate it's gained on level-ups.1) Base class won't help much with 100-200 levels of difference.
My approach would have been a new status skill that partly shields from magical damage for x number of turns. I like and understand evasion from weapon attacks. I like resistance to elements, maybe to magic itself. But I don't get random reduction of damage based of a stat/health. I liked older system way better, it was more intuitive and could have been great just with better balancing.Then we have a deal. Add a class for spells which shield party from either all magic or some element if you don't want resistance stat :D
Yeah, and that is exactly what I meant with new item "be" field. We can add stuff there effecting BE only.If you don't want evasion and resistance stats, then what possibly could be affected? We don't have much options to control in BE, attack = attack, health = health, magic = magic, etc.
This seems like a reasonable magical defense setup, why do we need more?Resistance is supposed to balance evasion. Evasion is a good way to avoid damage. When there is no way at all to avoid spells damage, it makes spells much better than normal attacks. Up to the point of not using normal attacks and only using warriors as tanks while mages do all damage.
I don't like magic weapon either.... I don't really like anything that would combine magic and attack into a singe damage formula. It kinda completely erases difference between magic and non magic combatants.It's not my decision. I'm tied by available icons, and there are plenty of high quality magical weapons like burning swords.
But equipping a different weapon does not remove this default skill if it's not fists. And we already decided to get rid of double base attacks, up to the point of moving all weapons to the main hand.
1) Base class won't help much with 100-200 levels of difference.
2) Too many factors involved for agility based evasion. Base class(es), equipment, relative bonuses to stats. It's impossible to predict the chance of evasion in particular case. While damage can be overcomed by high health, healing spells, defense and constitution, only agility can beat agility. I'm afraid it will lead to catastrophically unbalanced combat when the difference in levels is high enough.
Then we have a deal. Add a class for spells which shield party from either all magic or some element if you don't want resistance stat :D
Perhaps it could be limited by the amount of absorbed damage, not just number of times.
If you don't want evasion and resistance stats, then what possibly could be affected? We don't have much options to control in BE, attack = attack, health = health, magic = magic, etc.
Resistance is supposed to balance evasion. Evasion is a good way to avoid damage. When there is no way at all to avoid spells damage, it makes spells much better than normal attacks. Up to the point of not using normal attacks and only using warriors as tanks while mages do all damage.
It's not my decision. I'm tied by available icons, and there are plenty of high quality magical weapons like burning swords.
- Minor changes to reports
- We now allow multiple elemental multipliers
if "melee" in self.attributes: # TODO: ADD WEAPONS EFFECTS IF THIS IS A WEAPON SKILLS
attack = (a.attack*0.8 + a.agility*0.25 + self.effect) * self.multiplier
elif "ranged" in self.attributes:
attack = (a.attack*0.9 + (a.luck+50)*0.5 + self.effect) * self.multiplier # luck bonus is far more limited than agility bonus from melee, but ranged attacks should have drawbacks too
I forgot who came up with desc for elements but we need to change that... they're weird.One of temporary writers, probably a year ago or so. I can only replace it by direct descriptions of strong and weak sides of elements, without vague artistical parts.
You keep saying that it's a bad thing that a much higher characters dodges a lot vs some nub, while it is NOT!Too frequent evasions are often irritating when done by enemies, and make a game too easy when done by your team. How do you propose to calculate it? A.agility/t.agility or something?
I've never seen a game that has f*cking AGILITY STAT which was not used to evade in favor of a static evasion stat.http://finalfantasy.wikia.com/wiki/Evasion (http://finalfantasy.wikia.com/wiki/Evasion)
Normal attacks do not consume anything, I don't even like that they consume VP.0 vitality = inability to do anything outside BE. Of course you shouldn't be able to fight too.
And the way they were coded initially, they dished out very good amount of damage.There will be weapons skills to deal more damage. With free and powerful simple attacks what's the point of them? None, just spam normal attacks.
There was balance... there can be again.Yeah, when people wrote guides how to beat the second monsters team at arena. Out of 10 teams iirc.
You still haven't explained why:In this case the game will use the formula developed for physical attacks to calculate fire damage. Isn't it illogical?
"melee", "fire"
is not good enough? Idea behind magical weapons is usually so non magical characters can do elemental damage.
Because ranged characters are in less danger than melee ones.Code: [Select]if "melee" in self.attributes: # TODO: ADD WEAPONS EFFECTS IF THIS IS A WEAPON SKILLS
attack = (a.attack*0.8 + a.agility*0.25 + self.effect) * self.multiplier
elif "ranged" in self.attributes:
attack = (a.attack*0.9 + (a.luck+50)*0.5 + self.effect) * self.multiplier # luck bonus is far more limited than agility bonus from melee, but ranged attacks should have drawbacks too
Did you remove agility from ranged as well? Why do you hate that stat this much? :D
If we're going to add "attack" of some kind to items, effect field is pointless for non-magical attacks as they would do the exact same thing, so it should be removed.It depends. Do you want to add stuff like "physical damage 10-15 fire damage 2-6" to weapons? And then to all mobs? And then make sure that all npcs at arena have some weapons equipped to make sure they have proper attack range? (I don't :) )
Also, this is more like elemental resistance, magical resistance might look something like:Will it actually work with your code? Or it's just a general theoretical example? :DCode: [Select]{
"id": "Magic Immunity",
"desc": "No damage from any magic.",
"resist": ["magic"]
},
Also, "Healing" might not belong there cause it can be status oriented, without involving magic (technically speaking), like some chars use faith based healing or tech based healing that might not be magical in nature. Healing doesn't belong here...Lack of healing should balance such powerful trait.
Edit: There should not be items in the game to allow this other than for testing purposes... this is so overpowering that it's game breaking. Could be a nice for Mobs though...Only a few mobs have it in the whole game.
Ok, multiple elements should now work.Define multiple elements. I have Northern Flow spell for testing which has air and ice. Atm only air works, as far as I can tell based on numbers color.
One of temporary writers, probably a year ago or so. I can only replace it by direct descriptions of strong and weak sides of elements, without vague artistical parts.
Too frequent evasions are often irritating when done by enemies, and make a game too easy when done by your team. How do you propose to calculate it? A.agility/t.agility or something?
http://finalfantasy.wikia.com/wiki/Evasion (http://finalfantasy.wikia.com/wiki/Evasion)
Final Fantasy 10, pure (but hidden) evasion stat.
Final Fantasy X
Evasion is increased by use of the Sphere Grid, and Evasion nodes are activated by using Speed Spheres. Out of all the characters in the party, Lulu has the highest overall Evasion in her section of the Sphere Grid, however, many do not use Evasion nodes, and instead use Luck as it performs this function and more.
In addition, the most accurate attack in the game (belonging to Dark Ixion) requires a combined total of 290 points of evasion to ensure dodge any evadable attack. To accomplish this, add the points of evasion together to the luck stat.
The ability Evade & Counter is the improved version of Counterattack ability, and mostly renders Evasion redundant as it guarantees evading; although Evade & Counter does not trigger on whole party attacks or attacks which themselves are a counter. The maximum Evasion stat matches the other stat maximums at 255. Magic is unaffected by Evasion as most Magic has a 100% hit rate; those spells which don't still have a fixed hit rate that is unaffected by stats.
For more information on the mechanics of Evasion in Final Fantasy X, please see the page on Accuracy.
0 vitality = inability to do anything outside BE. Of course you shouldn't be able to fight too.
There will be weapons skills to deal more damage. With free and powerful simple attacks what's the point of them? None, just spam normal attacks.
Yeah, when people wrote guides how to beat the second monsters team at arena. Out of 10 teams iirc.
In this case the game will use the formula developed for physical attacks to calculate fire damage. Isn't it illogical?
Define multiple elements. I have Northern Flow spell for testing which has air and ice. Atm only air works, as far as I can tell based on numbers color.
Because ranged characters are in less danger than melee ones.
But I'm thinking about using the melee formula for ranged attacks too, they are not so different.
It depends. Do you want to add stuff like "physical damage 10-15 fire damage 2-6" to weapons? And then to all mobs? And then make sure that all npcs at arena have some weapons equipped to make sure they have proper attack range? (I don't :) )
Will it actually work with your code? Or it's just a general theoretical example? :D
Lack of healing should balance such powerful trait.
Only a few mobs have it in the whole game.
How was it done before the stat?evasion_chance = (t.luck-a.luck)*0.1 + 0.005*(t.level-a.level) + (t.agility - a.agility)*0.01
Might be easier to work with than absorption and resistance. Everything in one single mod from -1 to 1 (or from 0 - 200 like he suggests).Not everything. Our elements also provide bonuses and penalties to spells damage.
We don't force lowercase letters with code so your Magic Immunity prolly doesn't work properly cause most elements are capitalized:No. I changed them all to not start with capital letters, same result.
No. I changed them all to not start with capital letters, same result.Nevermind, forced recompile fixed that :)
Nevermind, forced recompile fixed that :)
First element you've specify in the attack will be used for color. That's another thing with multi-elemental attack that is shitty...Let's say we have air and ice spell.
If you're talking number, don't forget that we have decided to use a mean of all elements, instead of stacking multiplier effects. Same with defense. It's not the best solution but it was a solution, otherwise stacked damage bonuses would make single elements idiotic to use. Not mentioning Neutral will become the shittiest thing ever.
Let's say we have air and ice spell.
We:
1) Calculate attacking and defending levels for spell, as usual.
2) Divide it by two because we have 2 elements (3 for 3 elements, etc)
3) Calculate elemental bonuses for them separately. With divided by 2 elemental multipliers. (3 for 3 elements, etc)
4) Treat resulting two numbers of damage as two independent damages, with different colors, one after another.
Assume actors have an elemental resistance stat for each element. 0% is "normal" resistance, or full damage. 100% is full resistance. 200% is absorbing full damage, or full negative damage. -100% is double damage. This is a linear scale, so you can easily extrapolate the amount of damage done for any resistance value.Our absorption works differently, it absorbs a fixed amount of spell damage. This system assumes full control over absorption rating, which is cool, but requires rewriting all absorption parts.
That sounds interesting, although not simple.
- If you hit a creature with multiple elements that it's weak against, you should do significantly more damage than you would have with just one element that it's weak against.
- If you hit a creature with multiple elements that it absorbs, it should absorb significantly more HP than it would have with a single element.
- If you hit a creature with multiple elements, some of which it's very strong against and some of which it's very weak against, it should, at worst, do an average amount of damage. Same with healing.
- If it's immune to every element you hit it with, it should take zero damage.
- If you hit a creature with an element that it has normal resistance to and an element it is immune to, it should do less than normal damage, but at least half.
- The function should be relatively continuous; changing a single resistance by a small amount should never change the total damage by a large amount.
So, let's try this:
- Find the average off all the damage multipliers.
- If the result is greater than 1, raise it to the power of the number of elements involved in the attack.
- If the result is less than -1, do likewise (except preserve the negative sign if you end up squaring the value)
Let's go back to the original idea where we just add all the damage multipliers together to get the total damage. Boring stuff, right? It doesn't have to be if we spice it up in some other way.Gismo suggested it before too... Will require advanced coding, since effects should be really unique to be meaningful.
Why not consider having multi-elemental attacks inflict status effects? Now, coming up with all of the combinations will be time consuming, but it could net you something really cool. Maybe adding ice and electricity together will inflict Slow? Perhaps holy + fire has a chance of causing instant death to undead? There are all sorts of other things you could do with various elemental combinations if you move away from just the idea of pure damage. Plus, if you want, you can add these effects in addition to the high damage formula listed above.
I really hate that we cannot show many elements for multielemental attacks. Look here (http://images.bit-tech.net/content_images/2007/01/neverwinter_nights_2/cap5.jpg) for example, I mean the battle log. It tells you total damage and then all its parts, in different colors.
Even if it's not possible without deep rewriting, showing one element for ME spell is stupid. At least let's show it like" damage 130 (air+ice)".
Let's see...
Our absorption works differently, it absorbs a fixed amount of spell damage. This system assumes full control over absorption rating, which is cool, but requires rewriting all absorption parts.
That sounds interesting, although not simple.Gismo suggested it before too... Will require advanced coding, since effects should be really unique to be meaningful.
This sort of absorbs a fixed amount as well...No. 200% absorbs all, 150% absorbs 50%.
No. 200% absorbs all, 150% absorbs 50%.
Next up.. ( this 1 i made out of a front/side face picture )Looks great, but I think Saeko hair are less dark and more blue/violet than here :)
(https://s20.postimg.org/ol051y6ih/saeko.png) (https://postimg.org/image/ol051y6ih/)
Body is fine, but the hair are too thick. You use a few thick strands with noticeable distance between them, as a result they kinda start to look like tentacles. Here (http://img14.deviantart.net/5c63/i/2014/280/a/c/lady_esdeath_by_mimelex-d81xvie.jpg) you can see that her hair are rather slim.
Err, you mean for the last 2 girls or for the last 2 pictures of the last girl?
"hflip": True
I know what to do about the new damage calcs now, gonna try it out tomorrow.You mentioned that we could support all the usual elemental stuff like resistances for physical attacks too. It will help greatly to make mobs more interesting, in some games some creatures (usually undead ones) are immune or highly resistant to normal weapons no matter how powerful the attacker is.
Hi guys. I'm so sorry I've been gone so long. Tons of RL shit followed by just forgetting about my comittment to the project. I'm currently in some RL shit & in no mood to write, but I will deliver.Welcome back :)
That is if you're still interested in my texts.
I forgot who came up with desc for elements but we need to change that... they're weird.
Rewrite of the rewrite, hopefully this time will be ok or closer to the description that is desired.
FIRE: The wildest of the elements. Mercilessly and irreversibly destroying everything on its path. Leaving behind only scorched earth and ash. In hands of an amateur, is more dangerous to him then to his enemy. Fire Element regardless to its power, is weak against Water but have the advantage versus Air.
WATER: The most mysterious among the elements. Hiding it twisted and destructive nature under the calm surface. Capable of both, in swiftly or prolonging the violence when taking lives. Leaving behind only rumble and bodies as proof of it fatal capabilities. Dominating Fire with ease, the Water Element is relatively weak against Earth.
AIR: The most agile of the elements. Utilizing its transparency and omnipresent to maximum. Besides that, the wielder that align with the Air Element gets the possibility to use lightning base spells. Being able to strike swiftly and almost undetected, in capable hands this element doesn’t give the opponent much time to react. The Air Element excels against Earth but struggles greatly when dealing with Fire.
EARTH: The slowest and sturdiest among the elements. Known for sacrificing speed in exchange for enchanting its destructive power. Unlike other elements that leaves evidence of their devastating acts, Earth is capable of literally burying the truth. The Earth Element have the upper hand against Water, but have a hard time against the swift Air.
LIGHT: One of the two elements born from men desires, thoughts and deeds. The Light nest itself inside everyone souls. Gaining its force from good acts and pure thoughts. Unfortunately the Light Element is sentenced for eternal struggle against its rival and counterpart the Darkness. Being evenly matched, the outcome of this internal fight between them depends solely on ones choices.
DARKNESS: One of the two elements born from men desires, thoughts and deeds. Fuelling itself from anger, impure thoughts and evil acts. Dwelling deep in everyone’s soul, patiently expanding, slowly consuming ones soul. But its growth is successfully controlled by its greatest enemy and counterpart the Light Element. Being evenly matched, the outcome of this internal fight between them depends solely on ones choices.
NEUTRAL: Being Neutral is the most popular option among warriors that depends solely on power of their bodies. Not aligning with any element gives the benefit of not worrying of running out of magic or being countered by the opposing element. On other hand, being Neutral is the worst possible option for people basing their fighting style only on magic.
I'll fix descriptions a bit and add them to the game tonight + maybe fix a couple of minor issues and get rid of old and unused styles...One could say you added them personally.
Edit: Small SF Update:
- Added descriptions by Klaus
- Got rid of some styles/screens
One could say you added them personally.
You mentioned that we could support all the usual elemental stuff like resistances for physical attacks too. It will help greatly to make mobs more interesting, in some games some creatures (usually undead ones) are immune or highly resistant to normal weapons no matter how powerful the attacker is.
@Dark:
You need to add this to the main gfx effects of attacks that got to be horizontally flipped if they're coming from other side. Most of the newer attacks you've added are messed up because of this.Code: [Select]"hflip": True
DELIVERY = ["magic", "ranged", "melee", "status"] # Damage/Effects Delivery MethodsWe might want to treat any healing spells separately, they shouldn't work only in very special cases. "Magic" delivery assumes magic defense formula should work against the spell.
DAMAGE = ["physical", "fire", "water", "ice", "earth", "air", "electricity", "light", "darkness", "healing", "poison"] # Damage (Effect) types...
still need to rework on whats left of the older game texture but atm the skirt looks really flat while its not at all on the 3D model i need to fix that
it would take so long you migh give up midway..
We have more webm animations than we need for beta :)
The plan is to make weapons rather unique, since every one has its own skill list (which you should add too btw, there is no support for skills atm, only for spells).
True... it's a far more complex process that I thought. This level of experience may not be "passable" through a guide. We can create a chat-room over the weekend. For now, I need to know a line of soft (cured of greed or simply open source) that is required. For now I can gather:
- DAZ3D
- Source FilmMaker
- Blender
- XNALara
- MikuMikuDance
I have three (XNA, DAZ and MMD) installed atm. Until we're on the same page with the soft and extensions, any guide is useless. So if more than this is needed, let me know. There is an excellent private chat system called "discord" so lets get on the same page with the basics. Once we have the same software setup, you can delegate some of the rendering required to make proper packs.
=====================>>>>
I am almost done with the new BE logic, gonna push tomorrow. I have it working in my dev version already :) All the new formulas and logic and per damage effect reports :)
Elements descriptions fixed, numbers rebalanced. Are you going to add that different elements system which combines all resistances and absorptions or not? I don't get it.
Elements descriptions fixed, numbers rebalanced. Are you going to add that different elements system which combines all resistances and absorptions or not? I don't get it.
🔥 🌊☁💎⚡❄☀☠☣
Oh, and I've decided to do the "per damage type" damage as you've asked. It's messy and difficult but that is almost done too.
File "game/library/interactions/GM - negative.rpy", line 64, in script
python:
File "game/library/interactions/GM - negative.rpy", line 67, in <module>
result = run_default_be(enemy_team, background=back)
File "game/library/interactions/function - interactions (GM).rpy", line 389, in run_default_be
battle.start_battle()
File "game/library/be/core.rpy", line 169, in start_battle
self.main_loop()
File "game/library/be/core.rpy", line 98, in main_loop
ev.controller()
File "game/library/be/core.rpy", line 1542, in __call__
skill(ai=True, t=targets)
File "game/library/be/core.rpy", line 526, in __call__
self.effects_resolver(t)
File "game/library/be/content-classes.rpy", line 807, in effects_resolver
if not self.check_resistance(t):
AttributeError: 'BasicHealingSpell' object has no attribute 'check_resistance'
...
So far look awesome. Of course damage color needs to be tweaked, it should be DMG:25 Ice:17 Air:8, not DMG:25 Ice:17 Air:8.
evasion_chance = t.evasion # starting evasion chance = evasion statit's from the old evasion code. Unless it's gonna work for the new items fields.
if "critical_hit" not in effects and self.row_penalty(t):Critical effect ignores rows damage reduction? This is debatable, ranged attacks will destroy mages.
multiplier *= .5
effects.append("backrow_penalty")
What's the renpy's Image-Based Fonts exactly? I have very few meaningful results from google for this term, is it using small pictures as characters? Our elements icons might be recognizable enough to be used as elements symbols in text if needed.
You left it's from the old evasion code. Unless it's gonna work for the new items fields.
I probably shouldn't edit core.rpy by myself at this point to avoid complex merging.
Critical effect ignores rows damage reduction? This is debatable, ranged attacks will destroy mages.
You should do something about party gui not showing in BE if the battle is not initiated exactly like you do it in the code. If you start a fight via interactions escalation, it will use function run_default_be I wrote to avoid writing the same lines over and over. And it won't have the characters gui with health and stuff.
# BE attributes:
# self.evasion_multiplier = 0
# self.ch_multiplier = 0 # Critical hit multi...
# self.damage_multiplier = 0
# self.defence_bonus = {} # Delivery! Not damage types!
# self.defence_multiplier = {}
# self.delivery_bonus = {} Expects a k/v pair of type: multiplier This is direct bonus added to attack power.
# self.delivery_multiplier = {}
"evasion_multiplier": 0.1
"defence_bonus": {"magic": 100} # Delivery! Not damage types!
"defence_multiplier": {"magic": 0.2}
There is inconstancy with colors for ME. Usual spells and attacks have red damage numbers above target heads. The testing spell with wind+ice has green numbers.
# Critical Hit Chance:Have you seen it in the testing mode? It makes the chance vs goblins 75%, almost guaranteed.
ch = (a.luck - t.luck + 10) * .75
Yeap, numbers always were red, I dunno why ME are different in that regard now.
Also, in log we have DMG:434 ☁ 237 ❄237. It should be DMG:434 ☁ 237 ❄237 to avoid confusion.
Healing and poisoning are not reflected properly in the log. For healing it only says that healing was used, without numbers. And here (http://www.clker.com/cliparts/3/n/N/M/x/I/green-cross-hi.png) I found a decent "elemental icon" for heals :)
Poison already has a unicode character "poison": "☠", but it's not used anywhere as far as I can tell, which is a shame. I suppose it also could use dark green color for log damage.
Ah yes, I forgot about one thing. One of the main reasons why I used stats for evading and resistance is because stats can be freely used anywhere in the game with minimal coding.
Not only I had items which change evasion chance, I also added it to some traits and class traits. Specifically, heavy body types had small penalties to the evasion chance and vice versa, and agile classes had bonuses. They won't work now, naturally.
Have you seen it in the testing mode? It makes the chance vs goblins 75%, almost guaranteed.
I'll change the chance. It's way too high, basically, I am thinking we should have a max for every source for CH and EV, like limit max that items can bring to the table and what stats can bring to the table (per stat if needs be). Maybe the same for defense that comes from stats.Luck is difficult to increase. Once you set it in character data file, it's more or less permanent, except a few rare items.
# Target resisted due to stats being too l33t:
elif (t.intelligence + t.luck) > (a.intelligence + a.luck) * 1.3:
battle.log("%s not skilled enough to poison %s!" % (a.nickname, t.nickname))
t.beeffects = [0]
continue
# And last, in case target is already poisoned:
for ev in store.battle.mid_turn_events:
if t == ev.target and "poison" in ev.attributes:
battle.log("%s is already poisoned!" % (t.nickname))
t.beeffects = [0]
break
battle.mid_turn_events.append(PoisonEvent(t, a, damage))
We should allow traits to influence these chances as well but it's unacceptable that at level 1, chance is the same as at level 100... I'll try to cook up some way to mitigate this.A small character is not going to be any smaller at lvl 100. She might be more agile (they already are) and thus have more evading chance since it's tied to agility too. But base bonus to evasion based on the trait itself, ie her body size, will remain the same.
Yeah, I've changed my mind about those stats as they are basically direct chances gathered from traits and items.I don't think we should return to stats again. It was fine for 1-2 stats, but not for 7 or more.
I'm afraid poison will need more work :DI fixed it by changing the line itself, since it's probably a unique case. Unless you want to make it a general method.
Initial damage looks like ☠:169. But further damage over time uses the old version DMG: 56.
I fixed it by changing the line itself, since it's probably a unique case. Unless you want to make it a general method.
Oki, some was fixed with my last push, still on the list is:- You mentioned webm skills get screwed for some reason when used by the enemy team, and wanted to take a look at classes to prevent it.
- Traits effects
- BE Event effects
and:
- Sort skills by delivery instead of isinstance() checks. This should also make sure that we can use the same skills for attacks and magic.
- Smarter AI Algorithm.
- Infinite recursions prevention.
""" ==> @Review: There may not be a good reason for this to be a magical attack instead of any attack at all!
Point to Point magical strikes without any added effects. This is one step simpler than the MagicArrows attack.
Used to attacks like FireBall.
"""
# Special BE Fields:
# self.evasion_bonus = () # Bonuses in traits work differently from item bonuses, a tuple of (min_value, max_value, max_value_level) is expected (as a value in dict below) instead!
# self.ch_multiplier = 0 # Critical hit multi...
# self.damage_multiplier = 0
# self.defence_bonus = {} # Delivery! Not damage types!
# self.defence_multiplier = {}
# self.delivery_bonus = {} Expects a k/v pair of type: multiplier This is direct bonus added to attack power.
# self.delivery_multiplier = {}
"evasion_bonus": (2, 10, 100)
"defence_bonus": {"magic": (100, 100, 1)}
"evasion_bonus": (-2, -2, 1)
Clarify possible defence_bonus and defence_multiplier options. You always use magic as example, can I use specific elements or it's only for delivery types?
{I could use "resist": ["magic"]. This is not true, the trait stops working.
"id": "Magic Immunity",
"desc": "No damage from any magic.",
"resist": ["ice", "water", "fire", "air", "earth", "electricity", "light", "darkness", "healing"]
},
{Works against the initial damage. But the skill still poisons the target, and damage over time works as usual. Same for absorption.
"id": "Poison Immunity",
"desc": "Cannot be poisoned.",
"resist": ["poison"]
},
Everything that ends with a "bonus" expects a tuple, like:Ok, so for items +10%=0.1 evasion bonus, but for traits +10%=10 evasion bonus? Make it consistent ::)Code: [Select]"evasion_bonus": (2, 10, 100)
would mean that ev bonus is at least two at lower levels and 10 at level 100 and above.
You mentioned that instead ofI could use "resist": ["magic"]. This is not true, the trait stops working.
I tested healing immunity, it doesn't work as intended. If you give it to one of the girls in battle team, both girls become immune to mass healing spells. I'm not really going to use it for characters, but it's probably true for mobs too.
I never tested it properly before, so I dunno if it started to act weirdly after rewrite or not
Works against the initial damage. But the skill still poisons the target, and damage over time works as usual. Same for absorption.
It shouldn't apply the damage over time in the first place.
I also fixed a crash for all absorptions due to the new way of handling damage, when attack/defense in "resist = pow(attack/defense, .5)" was negative for absorbed elements leading to exception.
Ok, so for items +10%=0.1 evasion bonus, but for traits +10%=10 evasion bonus? Make it consistent ::)
No... this was before the update, I wrote that this will not work anymore. I'll take a look anyway.
Gonna look into this right now.
I thought it was consistent in a sense that everything that requires floats is called multipliers and everything that calls for ints is called bonuses. Do you want me to change multi to bonus for items as well?It is consistent in that sense, sure. But why do you use both floats and integers in different places for the very same stat? The only thing it achieves is makes my part harder :)
This is very easy to add, but we need to be careful because for example magic immunity would also block healing. It's your call, I can make this work like before without a fuss.I separated healing immunity from magic one to have more control, it's not needed any longer.
This is a bug, weird... I recall trying to prevent it. Gonna grab your changes and take a look as well.
It is consistent in that sense, sure. But why do you use both floats and integers in different places for the very same stat? The only thing it achieves is makes my part harder :)
I don't care which one it will be, but it should be only one.
I separated healing immunity from magic one to have more control, it's not needed any longer.
Everything you mentioned should be fixed.Yeah, except the poison absorption. I suppose you could rewrite the poison code to make it use poison element which will be absorbed every turn if you cannot simply disable poisoning.
heavy armor and weapons should prolly come with great evasion penalties too but this items stuff we'll prolly be working on for a looong time to come. Maybe someone will help out after the release...That would require a way to show that an item reduces or increases evasion, otherwise we force people to read items descriptions all the time. I'm not talking about showing numbers, it could be items subclasses like light and heavy which are visible in the gui, or very small icons that indicate how item changes BE values.
Yeah, except the poison absorption. I suppose you could rewrite the poison code to make it use poison element which will be absorbed every turn if you cannot simply disable poisoning.
That would require a way to show that an item reduces or increases evasion, otherwise we force people to read items descriptions all the time. I'm not talking about showing numbers, it could be items subclasses like light and heavy which are visible in the gui, or very small icons that indicate how item changes BE values.
I love when that happens, some hidden item effects that you'd expect and may or may not be hinted towards in the description! :)You propose almost every item to change evasion. At this point it's no longer a hidden effect, it's a routine mechanics.
# Items bonuses:
temp = 0
for i in t.eq_items():
if hasattr(i, "evasion_bonus"):
m += i.evasion_bonus
ev += temp
Xela, you destroyed items evasion just now :D
I am going to do skills sorting next, it has to be fixed all over the GUI and in several places in code so that's gonna take a while. Also gotta figure out a good way to get that done with all the recent changes.
You can now safely create any skill you like.No I can't. (http://www.pinkpetal.org/index.php?topic=1291.msg41246#msg41246)
No I can't. (http://www.pinkpetal.org/index.php?topic=1291.msg41246#msg41246)
Not to mention that I'm gonna tie skills to weapons right after making them, so I need that ability too.
First of all, I've yet to see a skill that needs that special field you mentioned. So yeah, I don't even know where to look for an example.
You also haven't changed the comment for P2P class, which leads me to believe it's not ready.
Let me see what you did and what goes wrong with it.You said something is wrong with one of new skills when it's used by enemy, I have no idea what are you talking about :D
You haven't fixed the issue with default attacks I mentioned. If a character has a default attack other than fists, equipping a weapon does not remove it.
You said something is wrong with one of new skills when it's used by enemy, I have no idea what are you talking about :D
You even haven't mentioned the name of the skills, I'm clueless here.
aim = self.main_effect["aim"]
point = aim.get("point", "center")
anchor = aim.get("anchor", (0.5, 0.5))
xo = aim.get("xo", 0)
yo = aim.get("yo", 0)
SimpleSkill(u"Soul Blade", menu_pos=0, range=3, attributes=['melee'], effect=20, multiplier=1.2, vitality_cost=20, desc="Projects a huge blade made from the user's soul energy towards the target.",
main_effect={"gfx": Transform("soul_sword", zoom=1.1), "sfx": "content/sfx/sound/be/soul_sword.mp3", "duration": 0.5, "aim": {"point": "bc", "anchor": (1.0, 1.0), "xo": -80}},
target_sprite_damage_effect={"gfx": "shake", "initial_pause": .3, "duration": .5},
target_death_effect={"gfx": "dissolve", "initial_pause": .5, "duration": .5})
"aim": {"point": "bc", "anchor": (1.0, 1.0), "xo": -80}}
center: center of the charcters image
tc: top center of the characters image
bc: bottom center of the characters image
fc: front center (Special per row instruction (for offset) applies)
"aim": {"point": "center", "anchor": (.5, .5)}
SimpleSkill("Meteor", menu_pos=12, attributes=['magic', 'fire'], effect=100, multiplier=6.0, mp_cost=15, range=4, true_pierce=True, type="se", desc="Summons flaming fragments of meteor.",
attacker_effects={"gfx": "orb", "sfx": "default"},
main_effect={"gfx": Transform('cataclysm_sideways', xzoom=-1), "sfx": "content/sfx/sound/be/fire8.mp3", "duration": 1.8, "aim": {"point": "bc", "anchor": (0.5, 0.1), "xo": 150, "yo": -370}, "hflip": True}, ...
ATL_ArealSkill(u"Water Blast", menu_pos=13, attributes=['magic', 'water', 'inevitable'], effect=200, multiplier=10.0, mp_cost=30, piercing=True, range=6, type="all_enemies",
desc="Hits the taget with a massive water blast!",
attacker_effects={"gfx": "orb", "sfx": "default"},
main_effect={"atl": water_combined, "predict": ["water_attack", "water_wave"], "left_args": [1.8, -300], "right_args": [-1.8, 300], "sfx": "content/sfx/sound/be/water7.mp3", "duration": 1.6},
target_sprite_damage_effect={"gfx": "shake", "initial_pause": 0.6, "duration": 0.9},
target_damage_effect={"gfx": "battle_bounce", "initial_pause": 1.6},
target_death_effect={"gfx": "dissolve", "initial_pause": 1.0, "duration": 0.5})
image water_wave = FilmStrip('content/gfx/be/filmstrips/water_wave.png', (531, 213), (3, 3), 0.15, include_frames=range(7), loop=False)
image water_attack:
"content/gfx/be/animations/water_attack/00.png"
pause 0.1
"content/gfx/be/animations/water_attack/01.png"
pause 0.1
"content/gfx/be/animations/water_attack/02.png"
pause 0.1
"content/gfx/be/animations/water_attack/03.png"
pause 0.1
"content/gfx/be/animations/water_attack/04.png"
pause 0.1
"content/gfx/be/animations/water_attack/05.png"
pause 0.1
"content/gfx/be/animations/water_attack/06.png"
pause 0.1
"content/gfx/be/animations/water_attack/07.png"
pause 0.1
"content/gfx/be/animations/water_attack/08.png"
pause 0.1
Null()
transform water_combined(xz, xo):
# It's prolly a better design to work with the displayable directly using contains instead of replacing them with parallel...
contains:
"water_attack"
xalign 0.5
ypos 600
yanchor 1.0
contains:
pause 0.6
"water_wave"
xalign 0.5
ypos 650
yanchor 1.0
xzoom xz
xoffset xo
yzoom 1.8
I tested fire arrow skill, which uses shatter gfx on death, which uses the infamous HitlerKaputt animation class.
When you kill mobs, they shatter all right, but at the same time the whole shattering cloud shakes, and it looks terrible.
Btw will new BE-only stats work for class traits? And if yes, are they going to be doubled when the class trait is single?
I think Areal aim of the left team might not be calculated properly. Most of our attacks are too large to notice but your new northern flow is clearly not being aimed correctly... Gonna try and trace the problem.
Any trait, no doubling. But we can change that if you want, it's just two lines of code per effect.I dunno what is the lesser evil here. Doubling will make some of them too powerful, no doubling will make double skills better than single ones in terms of BE-only stats :)
I dunno what is the lesser evil here. Doubling will make some of them too powerful, no doubling will make double skills better than single ones in terms of BE-only stats :)
We'll see.
I'm waiting for an item field for battle skills. Because as far as I know, "attacks" field is only for the basic attack which replaces default character attack.
Btw what will happen if a misc item will have BE-only stat? It can be equipped, but at the same works differently.
for i in t.traits:What are you trying to achieve with lvl < t.level?
if hasattr(i, "evasion_bonus"):
# Reference: (minv, maxv, lvl)
minv, maxv, lvl = i.evasion_bonus
if lvl >= t.level:
temp += maxv
else:
temp += max(minv, float(t.level)*max/lvl)
"mod": {in a class trait, I can't help but wounder how will it work, since the mod field used to apply 10% of stat every 5 levels when we used it for normal stats, thus rising upkeep infinitely.
"magic": 10,
"upkeep": 5,
"intelligence": 5
},
File "game/library/be/labels.rpy", line 26, in scriptafter trying mass heal in BE.
python:
File "game/library/be/labels.rpy", line 68, in <module>
battle.start_battle()
File "game/library/be/core.rpy", line 169, in start_battle
self.main_loop()
File "game/library/be/core.rpy", line 117, in main_loop
s(t=t)
File "game/library/be/core.rpy", line 536, in __call__
self.time_gfx(t, died)
File "game/library/be/core.rpy", line 1244, in time_gfx
self.timestamps[stamp]()
File "game/library/be/core.rpy", line 1527, in show_target_damage_effect
color = getattr(store, target.dmg_font)
AttributeError: 'StoreModule' object has no attribute '#7cfc00'
There is add_beskills field mentioned in your post about class traits, which should in theory add BE skills. In reality though it does nothing but exists in the code, and probably should be removed.
I'm also confused about the mod field for class traits. We actually almost removed it from normal traits because we have a much better one, mod_stats. It only remained for special stats like upkeep and disposition.
However when I see stuff like in a class trait, I can't help but wounder how will it work, since the mod field used to apply 10% of stat every 5 levels when we used it for normal stats, thus rising upkeep infinitely.
Either way, there should be consistency in traits. If mod field only increases once special stats like upkeep for normal traits, then it should do the same thing for classes. If we have support for mod_stats for normal traits, classes should support it too.
I think I'll put the old elements descriptions in the library location. That's exactly the place for stuff like this.
How do you set spells for arena fighters? The log is full of errors about missing spells at arena, do you use characters data files?
Ohhkey, I added "upkeep": [1000] to mod_stats of one of the traits, and nothing happened in the game.
Ok, I have "disposition": [1000], "upkeep":[1000] now. Disposition works. Upkeep doesn't.
def get_upkeep(self):
# TODO: To be revised after skills are added!
char = self.instance
if char.status == 'slave':
return 50
else:
return 0
# if char.status == 'slave':
# if traits['Prostitute'] in char.occupations:
# bu = 20 * char.rank
# su = char.charisma/10 + char.refinement*1.5 + char.constitution/5 + char.reputation/2 + char.fame/2 # Stats Upkeep
# ssu = char.anal/8 + char.normalsex/8 + char.blowjob/8 + char.lesbian/8
# return int(bu + su + ssu + char.upkeep)
# elif traits['Stripper'] in char.occupations:
# bu = 3 * char.strip
# su = char.charisma/10 + char.refinement*1.5 + char.constitution/5 + char.reputation/2 + char.fame/2 # Stats Upkeep
# return int(bu + su + char.upkeep)
# elif 'Server' in char.occupations:
# bu = 3 * char.service
# su = char.charisma/10 + char.refinement*1.5 + char.constitution/5 + char.reputation/2 + char.fame/2 # Stats Upkeep
# return int(bu + su + char.upkeep)
# else:
# bu = 20
# su = 0 # Stats Upkeep
# for stat in char.stats:
# if stat not in ["disposition", "joy", "health", "vitality", "mood"]:
# su += getattr(char, stat)
# return int(bu + su + char.upkeep)
# elif char.status == 'free':
# return char.upkeep
# else: # This is for any unknown types
# bu = 50
# su = 0 # Stats Upkeep
# for stat in char.stats:
# if stat not in ["disposition", "joy", "health", "vitality", "mood"]:
# su += getattr(char, stat)
# return int(bu + su + char.upkeep)
File "game/library/interactions/GM - negative.rpy", line 64, in scriptafter 4x attack.
python:
File "game/library/interactions/GM - negative.rpy", line 67, in <module>
result = run_default_be(enemy_team, background=back)
File "game/library/interactions/function - interactions (GM).rpy", line 389, in run_default_be
battle.start_battle()
File "game/library/be/core.rpy", line 169, in start_battle
self.main_loop()
File "game/library/be/core.rpy", line 98, in main_loop
ev.controller()
File "game/library/be/core.rpy", line 1691, in __call__
skill(ai=True, t=targets)
File "game/library/be/core.rpy", line 529, in __call__
self.effects_resolver(t)
File "game/library/be/core.rpy", line 678, in effects_resolver
defense = self.get_defense(t)
File "game/library/be/core.rpy", line 905, in get_defense
defense += max(minv, float(target.level)*max/lvl)
TypeError: unsupported operand type(s) for *: 'float' and 'builtin_function_or_method'
I tested fire arrow skill, which uses shatter gfx on death, which uses the infamous HitlerKaputt animation class.
When you kill mobs, they shatter all right, but at the same time the whole shattering cloud shakes, and it looks terrible.
It happens because the sprite damage effect, shake gfx, works at the same time as shatter gfx, and if you remove the shake part, shattering begins to work properly.
I could make the death effect work only after shaking ends by setting big initial_pause. But it looks weird when they explode after 1.5 seconds of shaking. It looks fine for the ice spell though, zero prism, where damage effect is texture replacement. So we probably should have an option to cancel damage effect if death effect is about to play.
I could just round() it, but I dunno if it's what you want there.
...
I'm getting weird results when trying to use a spritesheet animation for multiattack, it's not playing completely no matter how I change timing. Maybe I don't understand how it works?
It's Triple Ice Attack in the last push.
I mean, look at it and then at normal Ice Dagger Attack, they use the same gfx.
I asked (http://www.pinkpetal.org/index.php?topic=1291.msg40960;topicseen#msg40960) before if multiattack can support webms, and you said it doesn't matter what you use... Turns out it does -_-
I asked (http://www.pinkpetal.org/index.php?topic=1291.msg40960;topicseen#msg40960) before if multiattack can support webms, and you said it doesn't matter what you use... Turns out it does -_-
Now, now. When commercial devs release noticeably unfinished product (due to fixed release date usually), it always leads to disaster.
The problem is, when you said the function supports webms, it led me to converting many webms suitable only for multiattacks.
Looks like testing mode properties + be gui prevent (https://www.dropbox.com/s/78zbeahmzdxj9qb/menu.jpg?dl=0) me from making more skills, at this point I cannot test new ones.
There were two rows, then reduced to only one. I suppose there is a bug in gui?
What menu_pos does in SimpleSkill functions? I don't see any changes in BE gui after changing it.
I pushed a few attacks (without suitable sounds mostly). One of them is Dagger Double Strike, it's a normal single webm. Another is Bone Dagger Attack 4X, it uses the same gfx plus MultiAttack animation.
The thing is, Bone Dagger Attack 4X position is noticeably wrong, even though Ice Dagger Attack3X position with almost the same code is fine. It's probably because MultiAttack uses wrong position for webms.
The thing is, Bone Dagger Attack 4X position is noticeably wrong, even though Ice Dagger Attack3X position with almost the same code is fine. It's probably because MultiAttack uses wrong position for webms.
Ok, I finished with dagger skills, for beta at least. All weapons will be rather unique, we can afford it with those hundreds animations in db+coded animations aka MultiAttack (and probably a few more after beta, like https://www.youtube.com/watch?v=lDTjtXhKk9s&feature=youtu.be (https://www.youtube.com/watch?v=lDTjtXhKk9s&feature=youtu.be))
If we could use arbitrary figures as masks to slice character to pieces like on the video, it will open another way to build animations.
Doesn't HitlerKaputt randomly send pieces to fly?
Doesn't HitlerKaputt randomly send pieces to fly?
Ideally we'll need static or animated textures for damage effects, like iced, for all elements. It's just not easy to find decent ones.
I don't remember if animated was simple or not in this case. Static just needs pics:Nah, it needs more attention than grabbing a random low quality picture from google. It's not a priority anyhow, even for version>1, but it will look good if done properly.
I have a small problem with P2P_Skill. It appears that there is no way to use projectile_effects without main_effect and still make animation work. But I don't need main_effect sometimes, all I need is projectile and target_sprite_damage_effect. Without main_effect P2P_Skill just plays nothing at all.
Yeap, super low duration and simple picture as gfx helped.
We definitely will need conditions for weapons skills after beta. Maybe level and stats. Without it they are kinda insipid.
I wonder if it's possible to loop sounds in BE. An easy way to make both simple and advanced versions of a skill is to loop webm and show it 2-3 times, but it requires sound editing. Which is not a problem, but it increases the game size, so if we can avoid it, it would be cool.
MultiStrike is fine, but I don't understand how to control overlapping (due to usual lack of comments :) ).
Ohhkey, if duration is pretty much random, then what duration field does there?
After my last push there are Weapon Dance and Weapon Dance Multi skills. The latter one looks very weird no matter how I change numbers.
After my last push there are Weapon Dance and Weapon Dance Multi skills. The latter one looks very weird no matter how I change numbers.
I played a bit vs mobs. They actively use powerful attacks, run out of mp/vitality and start spamming normal attacks. It's boring.
I think they should have minor vitality and mp regeneration, maybe 5-10 per turn.
The idea is to loop both webm and sound and play them twice to make the attack longer. Looping webm and showing it via normal function works fine as far as I know, I tried it once. So only looping sound remains.
"sfx": ["content/sfx/sound/be/multi.mp3"]*2, "loop_sfx": True
I think they should have minor vitality and mp regeneration, maybe 5-10 per turn.Either this, or waiting option should restore 5-10 vitality and mp for enemies and be used by AI often enough.
Either this, or waiting option should restore 5-10 vitality and mp for enemies and be used by AI often enough.
The difference is, it should be more powerful for enemies than for player team. Because we most likely will have some kind of items inside BE.
Perhaps the best bet is to introduce BE-only stats that provide regeneration for hp, mp or vitality per turn, give those stats via traits to mobs, and (optional) weaker versions via items to player team.
The death effect from the youtube video will be perfect for Moon Slice attack from the last push, if you still have the code.
I don't think I'll need something else coded for BE until the beta. All that remains is to tie a dozen webms to attacks and then attacks to weapons.
You, however, wanted to code a function for magic shield of some kind instead of the resistance stat.
I added some time ago Slave_BE_AI part, it's for slaves characters involved in BE but not allowed to fight. You probably could allow them to use healing spells.
Can you confirm point 1)? It should have been fixed! I am like 99.99% sure of that :DHm. Yeah, you right. The last time I used matrix it wasn't fixed, but not anymore. Guess some sneaky push changed it :)
Two/three are obviously doable but you might now be able to update matrix "in real time" anymore because we'll have to manage the data internally.I figured it will be easier in terms of code to hide/show areas while the matrix in question is not active, but in fact it doesn't matter if areas will appear/disappear in real time or not.
Hm. Yeah, you right. The last time I used matrix it wasn't fixed, but not anymore. Guess some sneaky push changed it :)
I figured it will be easier in terms of code to hide/show areas while the matrix in question is not active, but in fact it doesn't matter if areas will appear/disappear in real time or not.
Take a look at Emerald Arrow skill in my last push. It's absolutely screwed for no apparent reason. My guess is ArrowsSkill doesn't support webms properly (which is weird, since P2P attack works as usual).
It works differently on the top and bottom goblins in the testing mode. So it's clearly something in the code.
Actually... first thing that came to mind are the definitions, let me try something...
So, webm channels could have any names, huh. You always used main_gfx_attacks, I figured it's a must have.
"""This is the class I am going to comment out really well because this spell was not originally created by me
and yet I had to rewrite it completely for new BE.
"""
Weapons attacks menu in BE was wrecked by the amount of attacks again :)
It will never look like this outside of testing mode because it will be impossible to have so many, but it really complicates testing itself.
Once again im short on free time..
So if its possible for you to fix the things that prevents me to play the game ( dev ) like grilsmeet ( you got nothing better to say ) then send back to title screen or other things like those there .. buildings ( at least 1 even the shack lol ) girls jobs/stats well mostly job related skills that are in the S tab.. not sure they work right.. so this way i could test the girlpacks im gonna make and wont have to worry about a difference between alpha and dev version..
If you can do those things when taking a break from BE ill focus my free time doing whats missing to make those packs
Meaning since you changed to git i never was able to pull an update and make it work i always need to erase and clone the whole thing lol
How to increase max value of a stat via code?
char.stats.max["charisma"] += 100
char.stats.lvl_max["charisma"] += 100
choices = []
for i in chars.values():
if i not in hero.chars and not i.arena_active and i.location in ["city", "girl_meets_quest"] and i not in gm.get_all_girls() and i.has_image(has_tags):
choices.append(i)
File "game/library/screens/locations/swimming_pool.rpy", line 4, in scriptI dunno what to do at this point ::)
$ gm.enter_location(has_tags=["pool", "sfw"], curious_priority=False)
File "game/library/screens/locations/swimming_pool.rpy", line 4, in <module>
$ gm.enter_location(has_tags=["pool", "sfw"], curious_priority=False)
File "game/library/interactions/classes - interactions (GM).rpy", line 347, in enter_location
cell = GmCell(self.label_cache, **kwargs)
File "game/library/interactions/classes - interactions (GM).rpy", line 42, in __init__
if i not in hero.chars and not i.arena_active and i.location in ["city", "girl_meets_quest"] and i not in gm.get_all_girls() and i.has_image(has_tags):
File "game/library/characters/classes - characters.rpy", line 3367, in has_image
imgset = tagdb.get_imgset_with_all_tags(tags)
File "game/library/classes - tags.rpy", line 115, in get_imgset_with_all_tags
pathset = self.get_imgset_with_tag(tag)
File "game/library/classes - tags.rpy", line 103, in get_imgset_with_tag
imgpathset = self.tagmap[tag]
TypeError: unhashable type: 'RevertableList'
An attempt to create a list of chars with specific tagsI dunno what to do at this point ::)
(before beta) An ability to freely add and remove available matrix areas (while outside of the matrix) depending on conditions, like flags. So if you don't need a certain area anymore you can hide it, and vice versa.
(optional, maybe after beta) an ability to add one or more areas with a preset size and form, but random coordinates. Will be useful for random stuff like finding items.
Does the shape actually matter? We can do this two ways:Only size matters. I'm going to use only simple rectangular areas for random matrix anyway, but it's hard to tell what is the best size without trying out.
1) We create a simple rectangular mouse area and randomly align it.
2) We allow polygons of any shape, you'll draw them at the center and specify offsets that will be applied to every point. This one is a lot harder due to how screens are coded in Ren'Py and I don't see any advantage as opposed to a rect?
Post-Alpha of shooting range: https://www.youtube.com/watch?v=4wZhf3TQV6M&feature=youtu.be (https://www.youtube.com/watch?v=4wZhf3TQV6M&feature=youtu.be)Those gray wall textures are super depressing, but the animation is awesome :)
Only size matters. I'm going to use only simple rectangular areas for random matrix anyway, but it's hard to tell what is the best size without trying out.
Those gray wall textures are super depressing, but the animation is awesome :)
Unpack the tags instead of passing the list:Nice, works great. It will help to pick better chars for specific locations such as swimming pool, where we definitely don't need those who don't even have pics with swimsuits.
i.has_image(has_tags) ==> i.has_image(*has_tags)
Nice, works great. It will help to pick better chars for specific locations such as swimming pool, where we definitely don't need those who don't even have pics with swimsuits.
It's an update for the function which selects characters for locations during GMs. Even though the whole GM/interactions system will be rewritten after 1.0 according to an issue, it felt wrong to leave it without such an option.
I suppose it could hit performance when there are many chars to pick from, but I didn't noticed any changes in loading times after adding it to a new location.
You use use top_stripe(True) to show the upper menu on screens. I wonder if there is a way to hide it when needed without hiding the whole screen.
Pff... possibly. I'll have to cook up a function. We usually hide the strip when we want to prevent saving, you can also add parameter to the "master" screen and condition strip off it.In some cases it's possible to interrupt, and thus break forever, events by using the top menu at the wrong time. Naturally, it won't happen if you always switch to another screen when doing anything unusual (like I do now, after finding out about the issue).
I know it's something we rejected in the past, but how about we ma ke status/revive/restore types elements bound as well? It will make interface more consistent and will prolly feel ok...That's almost how it's done in D&D games, they have so called positive energy which heals alive creatures.
We might also want to add a couple more of these skills, maybe for other stuff as well.Based on available animations, there could be elemental based shields. At very least fire, ice and wind, possibly more.
In some cases it's possible to interrupt, and thus break forever, events by using the top menu at the wrong time. Naturally, it won't happen if you always switch to another screen when doing anything unusual (like I do now, after finding out about the issue).
That's almost how it's done in D&D games, they have so called positive energy which heals alive creatures.
Our healing already works like an element, with traits and immunities supported. It just has negative "damage" resulting in healing the target. Gui is pretty much the only thing that will change if there will be an official healing element, so why not.
Btw I wonder how hypothetical Healing Absorption trait will work, in theory it should decrease the target health during healing :)
Based on available animations, there could be elemental based shields. At very least fire, ice and wind, possibly more.
That reminds me of some spells from D&D, where elemental shields absorb the corresponding elemental damage and also damage attackers in close combat with this element.
Oki, I'll rewrite sorting mech. We might also introduce different types of healing, like Light/Water/Wind based or some stuff like that. Or maybe even "Life Drain" for Darkness.
use location_actions("swimming_pool")It however works without dissolve, so doesn't work very good. It there a way to include dissolve?
$ img_swim_pool = ProportionalScale("content/gfx/interface/icons/sp_swimming.png", 90, 90)
imagebutton:
pos(290, 510)
idle (img_swim_pool)
hover (im.MatrixColor(img_swim_pool, im.matrix.brightness(0.15)))
action [Hide("swimming_pool"), Show("swimmong_pool_swim")]
...
button:
xysize (240, 40)
yalign 0.5
action [Hide("swimmong_pool_swim"), Show("swimming_pool")]
text "Leave" size 15
At the swimming pool location I switch between screens viaIt however works without dissolve, so doesn't work very good. It there a way to include dissolve?
action [Hide("swimming_pool"), Show("swimmong_pool_swim"), With(dissolve)]
at fade_in_out(t1=0.6, t2=0.3)
But why can't you just hide the overlay screen and show it without the top stripe??? I don't feel much like trying to access screens args and flipping the variable it is conditioned of.I thought it's a simple thing, since renpy was developed for screens manipulations :D
Oki, I'll rewrite sorting mech. We might also introduce different types of healing, like Light/Water/Wind based or some stuff like that. Or maybe even "Life Drain" for Darkness.It's hard to imagine the logic of tying healing to different elements. I mean, we could use different types of healing, like insta heal, regeneration over time, life drain, converting mp/vitality to health, etc.
But actually tie the said Healing Wind to wind element? How?
I thought it's a simple thing, since renpy was developed for screens manipulations :D
Naturally, we can live without it just fine.
Also there seems to be a background missing cause I get errors in the pool.I just fixed a narrator line available only for swimming =>100 which caused crashes, but other than that, everything is stable in the pool. I suppose force recompile is needed.
everything is stable in the pool. I suppose force recompile is needed.
label swimming_pool:
...
scene bg pool_inside
Excuse me? How is it possible to have a matrix area, no matter if random or not, outside of the matrix screen?
re a couple of times, game expects image to be named after the label or this default behavior to be overridden when calling interactions. Girlsmeets are f*cked, so that was the error... renaming the image is prolly simpler.This limitation will bite us in the future if we'll have multiple bgs for the very same location depending on the time (morning/day/evening/night).
I've just coded it as a separate screen... you basically provide a name and a size for the rect as screen arguments. But you obviously also want to in the matrix for I'll throw it in there as well. There is no point to add this random element into the JSON file, it should be handled in script.Ohhkey, as long as it works just like a normal matrix but with one or more randomly placed areas, it's fine by me.
It may also require a function so the area doesn't "jump" around... which reminds me, do we want this area to jump around every time screen is activated or should it's position be randomized just once?Well... I want to use it to randomly hide items and events. It means that after you found an item or an event, the area should no longer be there at least until the next day.
It may also require a function so the area doesn't "jump" around... which reminds me, do we want this area to jump around every time screen is activated or should it's position be randomized just once?Ideally, it should be under control. When we need to randomize random matrix anew, we do so. When we don't, we don't.
This limitation will bite us in the future if we'll have multiple bgs for the very same location depending on the time (morning/day/evening/night).
Ohhkey, as long as it works just like a normal matrix but with one or more randomly placed areas, it's fine by me.
I don't need it for a normal matrix.
Well... I want to use it to randomly hide items and events. It means that after you found an item or an event, the area should no longer be there at least until the next day.
Ideally, it should be under control. When we need to randomize random matrix anew, we do so. When we don't, we don't.
It's totally wrong to call this a "limitation" in any sense of form. As I've said, you can specify background when you call the GM, it's a major convenience...I feel like storing the current background in a variable, like gm.label_cache does for labels, and use it for GMs is a better solution.
I feel like storing the current background in a variable, like gm.label_cache does for labels, and use it for GMs is a better solution.
self.bg_cache
def start(self, mode, girl, img=None, exit=None, bg=None):
elif bg is not None:
self.bg_cache = "bg " + bg
self.bg_cache = bg
I've mentioned this before a couple of times, game expects image to be named after the label or this default behavior to be overridden when calling interactions. Girlsmeets are f*cked, so that was the error... renaming the image is prolly simpler.Right, so why is this expected? The game basically uses gm.label_cache as self.bg_cache instead of having independent gm.bg_cache which is not tied to labels. Is it impossible to do?
Right, so why is this expected? The game basically uses gm.label_cache as self.bg_cache instead of having independent gm.bg_cache which is not tied to labels. Is it impossible to do?
label swimming_pool:
...
while 1:
$ result = ui.interact()
if result[0] == 'jump':
$ gm.start_gm(result[1], bg="pool_inside_background_image")
I mean, when we write scene bg swimming_pool, can't it be automatically saved in a variable and used by GMs or any other system?
image bg swimming_pool = ...webm background with waves?
I am worried about spell/skill imbalances... And Buff is now "fixed", feels like there should be a "caster" bonus in it. We'll have to set some time aside to balance everything in terms of cost and power and menupos before release.I suppose the buffs defence_multiplie could be min(caster.magic*0.01, 0. 8) .
We'll also prolly need more flags with skills, those will be needed for writing algorithms when building NPC warriors of all sorts. Same prolly for items but we have a lot of flags there so it might be ok.
for i in items.values():They don't count as items or something? I kinda need them for testing.
h.inventory.append(i, 5)
hero.inventory.append(i, 5)
I wonder why in the dev mode MC doesn't have specific items types, like those with "slot": "loot". Even though it's done via They don't count as items or something? I kinda need them for testing.
if last_label in ("items_transfer"):This is a very bad design with little to no control over items filters. We need a high degree of control over inventory categories because we have more categories than space in gui.
self.FILTERS = self.GEQ_FILTERS
else:
self.FILTERS = self.ALL_FILTERS + ["resources"] # TODO: Fix this to a more sound design.
Oh boy...This is a very bad design with little to no control over items filters. We need a high degree of control over inventory categories because we have more categories than space in gui.
I think that we talked about not showing filters for which char doesn't have items for at all.It's for shops only, where unnecessary, unused filters look messy. If cafe doesn't buy or sell anything but consumables, then showing there filters for anything but consumables is 100% pointless and also possibly confusing for some players.
And combining some items types into single filters...Yup, we need filters to show more than one slot when needed. Even your resources items should be in some specific category, probably together with loot items, instead of being visible in ALL filter only.
And something is to be said about finding icons for all elements and delivery types... images that we use completely outshine unicode that we use.Done :)
Done :)
hero "Hello"
$ hero.health += 10
nami "Hello"
$ nami.health += 10
$ nami.mood_override() # Or whatever it's called...
While messing with BR, I may have figured out how to get our inherit from ADVCharacter directly...Funny, I don't see BR on github anymore. It was there just a few days ago.
I was under impression that it's unsafe to write stuff like $ hero.health += 10, and one should use $ hero.mod("health", 10) to check if health is less than all maxes before applying.
Funny, I don't see BR on github anymore. It was there just a few days ago.
$ nika.stat += 10
$ nika.expr("face_expression")
$ nika.set_flag("fucked_the_capitain")
nika "Hi, I am Nika!"
Fix BE menu for weapon attacks when you'll have time. I believe scrolling of some kind is the only solution, since we'll have more and more attacks in the dev mode.
Oki, I'll add a viewport there right now.
call screen hidden_area(areas={...})_result variable does not exist, unlike normal matrix. So I pretty much cannot know what the screen returns.
call screen hidden_area(areas={"fish_0": ((100, 100), (.1, .5)), "fish_1": ((100, 100), (.1, .5)), "fish_2": ((100, 100), (.1, .5)), "fish_3": ((100, 100), (.1, .5)), "fish_4": ((100, 100), (.1, .5)), "fish_5": ((100, 100), (.1, .5)), "fish_6": ((100, 100), (.1, .5)), "fish_7": ((100, 100), (.1, .5)), "fish_8": ((100, 100), (.1, .5)), "fish_9": ((100, 100), (.1, .5))})all ten areas are located in top left corner, with zero randomness.
I dunno why _return doesn't work. But I don't really see any attempts to randomly place hidden buttons, so the lack of randomness is not surprising.
I thing _return works but you've called it _result in your code.Yeap, notepad+ autocorrect :)
# Expects a dict, like: {"hidden_cache_1": ((100, 100), (.1, .5)), "hidden_cache_2": ((50, 50), (.54, .10)), } If cache is found, screen (which should be called) will return: "hidden_cache_1" string. Tuple is the size in pixels.I don't see a word about coordinates. Only about size. How am I supposed to randomize them?
I don't see a word about coordinates. Only about size. How am I supposed to randomize them?
fish_list = []fish list contains all fishable items. Then we randomly pick 8 items from the list and create fish_list from them. This way there won't be all existing items at the same time, and also there will be a chance to have multiple copies of the same item on the screen.
fish = list(i for i in items.values() if i.slot == "loot" and "Fishing" in i.locations and i.price <= hero.get_skill("fishing")) # Get a list of fishing items player is skilled enough to fish out! We should prolly add some normal items here as well.
# Also maybe one super, buper item at very low chance of catching :D
while len(fish_list) < 9:
fish_list.append(random.choice(fish))
for i in fish_list:Then we give every element random alignment and send them to the hidden matrix screen. And see one single webm there instead of 8.
temp= ((100, 100), (random.random(), random.random()))
item = renpy.call_screen("fishing_area", temp)
hero.add_item(item)
hero.say("I caught %s!" % item.id)
I tested the hidden_area screen a bit using fishing code.even though fishing screen at least showed one area randomly with the same code.
By default it shows zero areas for some reason. I used 500x500 buttons, impossible to miss even if it shows just one instead of 8.
Then I changed buttons alpha from .0001 to .01 and it started to show one button in the top left corner, without any randomness.
If I have to guess, 0001 alpha is too small for renpy to work with. Dunno why .01 works like that though.
http://www.netanimations.net/water_waves_ocean_ripple_high_quality_animated_gif.gif (http://www.netanimations.net/water_waves_ocean_ripple_high_quality_animated_gif.gif)I found very good (http://www.3dxo.com/textures/animated) animated water textures. However, we probably will need a custom class for them. I'm talking about a list of 250 jpg images, 256x256 each. So in order to show it full screen we need to multiply them to cover the whole area. Doing it manually for all 250 images is a very bad scenario.
Maybe we should use some animation like this :D
image water:We never tried to multiply animations before though, as far as I know.
"water1.jpg"
pause 0.1
...
"water250.jpg"
I remember about it. My point is we never tried to use small animations as tiles to make one big fullscreen animation. Is it even possible with renpy with acceptable performance?
Remind be how to hide characters sprites by HitlerKaputting them, it's been a while since I used it :)
show expression HitlerKaputt(displayable, crops) as meow
pause 1.5
hide meow
But it's for the future. Right now we need the ability to freely disable and enable any areas in normal matrix when needed.
Sadly, circles webm doesn't look good when zoomed a lot, I replaced it with bubbles webm.
I have another similar minigame in mind. We show a few fast moving webms just like at the fish screen, preferably with more complex trajectories, but you can see them only in a small area around the cursor, like a radar with 100-200 pixels radius :)
The circles webm probably will look good as the cursor image there.
I wonder if it's possible/wise to make a webm instead of 250 pictures to use as tiles. No need for image prediction, less size.
add Frame("water_texture", tile=True, xysize=(1280, 720))where
image water_texture = Movie(channel="main_gfx_bow", play="content/gfx/animations/water_texture_webm/movie.webm")does nothing, it's basically invisible :D
I pushed it, maybe you could do something.
Faulting application name: pythonw.exe
Faulting module name: renpysound.pyd
Exception code: 0xc0000005
Fault offset: 0x0000c851
Faulting process id: 0x2fa0
Faulting application start time: 0x01d2246bb5fc1827
Faulting application path: C:\Pytfall\RenPy\lib\windows-i686\pythonw.exe
Faulting module path: C:\Pytfall\RenPy\lib\windows-i686\lib\renpy\audio\renpysound.pyd
Do you think it's a wise idea to create dozens non interactable random chars only to make them fight at arena? We have many good npcs sprites in dropbox instead.
File "game/library/screens/next_day.rpy", line 94, in script callAfter 5-6 days.
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 81, in script call
call next_day_calculations
File "game/library/screens/next_day.rpy", line 142, in script
$ building.run_nd()
File "game/library/screens/next_day.rpy", line 142, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core_buildings.rpy", line 595, in run_nd
self.env.run(until=100)
Exception: (ZeroDivisionError('float division by zero',), ZeroDivisionError('float division by zero',))
File "game/library/screens/next_day.rpy", line 81, in script callNext attempt, already on second day.
call next_day_calculations
File "game/library/screens/next_day.rpy", line 142, in script
$ building.run_nd()
File "game/library/screens/next_day.rpy", line 142, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core_buildings.rpy", line 595, in run_nd
self.env.run(until=100)
Exception: (ZeroDivisionError('float division by zero',), ZeroDivisionError('float division by zero',))
You wanted to rewrite items sorting code btw to make it support multiple slots/types when needed :)
self.ALL_FILTERS = ['all', 'weapon', 'smallweapon', 'head', 'body', 'wrist', 'feet', 'cape', 'amulet', 'ring', 'consumable', 'gift', 'misc', 'quest']Current filters don't allow more than one slot per gui category. There should be enough control over filters to show any slots when needed.
self.GEQ_FILTERS = ['all', 'weapon', 'smallweapon', 'consumable', 'head', 'body', 'wrist', 'feet', 'cape', 'amulet', 'ring', 'misc', 'quest']
self.FILTERS = self.ALL_FILTERS
def set_page_size(self, size):
self.page_size = size
self.page = 0
self.set_max_page()
def apply_filter(self, direction):
"""Filter for items.
Currently filtered by slot.
"""
# if last_label in ("char_profile", "char_equip", "items_transfer"):
if last_label in ("items_transfer"):
self.FILTERS = self.GEQ_FILTERS
else:
self.FILTERS = self.ALL_FILTERS + ["resources", "loot"] # TODO: Fix this to a more sound design.
I just added killer class that inherits from three parent classes so you can do stuff like:$ n = chars["Naruko_Uzumaki"]Code: [Select]$ nika.stat += 10
$ nika.expr("face_expression")
$ nika.set_flag("fucked_the_capitain")
nika "Hi, I am Nika!"
File "game/library/events/StoryI/naruto_quests.rpy", line 166, in script
n "..."
Exception: Sayer n is not a function or string.
hbox:I need to build similar screen for a few characters.
style_group "content"
spacing 14
pos (17, 15)
for l in chars_list:
vbox:
spacing 14
for c in l:
$ char_profile_img = c.show('portrait', resize=(98, 98), cache=True)
$ img = "content/gfx/frame/ink_box.png"
button:
idle_background Frame(Transform(img, alpha=0.4), 10 ,10)
hover_background Frame(Transform(img, alpha=0.9), 10 ,10)
xysize (470, 115)
action Return(['choice', c])
I suspect chars_list is not just a list of chars, but something more complex.
$ pytfall.world_quests.get(event.quest).next_in_label(...)
$ advance_quest("quest", ...)
Quests should have unique names, no? Ie register_quest("Strange Idol", manual=None).
While all quests to kill enemies inside SE would be called Extermination for example.
# Unility funcs to alias otherwise long command lines:
# TO BE USED IN LABELS (during gameplay aka not in init)!
def create_quest(*args, **kwargs):
return register_quest(*args, **kwargs)
def advance_quest(name, *args, **kwargs):
quest = pytfall.world_quests.get(name)
quest.next_in_label(*args, **kwargs)
def finish_quest(name, *args, **kwargs):
quest = pytfall.world_quests.get(name)
quest.finish_in_label(*args, **kwargs)
Xela, I need a function which will return the total amount of X item in inventory of provided character or list of characters, and false if they have none.
def has_items(item, chars):
amount = 0
for c in chars:
amount += c.inventory[item]
return amount
if has_item("name") is False:
...
if not has_item("name"):
...
if has_item("name") > 0:
...
doesn't see equipped items.
Those are removed from inventory but it can be arranged.It'll add there comment that it should be done after the beta.
The game ignores all traits effects atm. I need them working to add a few new ones.
I thought about loot + resources + quest items. They are very similar, ie cannot be used directly. I think the very last filter at the equipment screen is for quest items.
@property
def max_page(self):
return len(self.paged_items)
from: def calc_max_page(self):
"""Calculates the max page.
"""
self.max_page = len(self.filtered_items) / self.page_size if len(self.filtered_items) % self.page_size not in [0, self.page_size] else (len(self.filtered_items) - 1) / self.page_size
192.30.253.113 github.comin the hosts file fixes it for now.
class GeneralStore(ItemShop):Clarify locations, please. We always run shops manually, how locations can even be used here?
'''General Store (sells basic items)
'''
def __init__(self, name, inv_length, locations, *args, **kwargs):
ItemShop.__init__(self, name, inv_length, locations, *args, **kwargs)
def init_shops(self):
# Shops:
self.shops = ['General Store', 'Cafe', 'Work Shop', 'Witches Hut', 'Tailor Store']
self.general_store = GeneralStore('General Store', 18, ['General Store'])
self.cafe = ItemShop('Cafe', 18, ['Cafe'], sells=["food"])
self.workshop = ItemShop('Work Shop', 18, ['Work Shop'], sells=["armor", "dagger", "fists", "rod", "claws", "sword", "bow"])
self.witches_hut = ItemShop('Witches Hut', 18, ['Witches Hut'], sells=["amulet", "restore", "smallweapon"])
self.tailor_store = ItemShop('Tailor Store', 18, ['Tailor Store'], sells=["dress"])
self.hidden_village_shop = ItemShop("Ninja Tools Shop", 18, ["Ninja Shop"], gold=1000, sells=["armor", "dagger", "fists", "rod", "claws", "sword", "bow", "amulet", "smallweapon", "restore", "dress"], sell_margin=0.85, buy_margin=3.0)
Ah, so it's not a location in terms of the screen where we call it, but more like a unique id of the shop?
I have troubles with interactions screen. After jumping to some location from interactions disposition meter and character picture remain at the screen forever. I suppose I should hide the screen first, but there are so many jumps and calls that I can't figure out it.
I think that you're supposed to jump to label girl_interactions_end...
That label is actually quite pointless... it should be fully encapsulated into GirlsMeets.end method. It should be doable just by copypasting the damn thing and "safe" argument will work properly, because it is useless right now as it doesn't do half of the things it is supposed to.
gm.start("girl_interactions", chars[char], chars[char].get_vnsprite(), place, background)normally you return to place after interaction is over. But after picking a certain option you return to some another place.
$ gm.end(safe=True)
jump any_location
Don't forget about traits effects :)
Since they are not even visible in gui, I suppose they are not added to characters despite having the needed traits.
unless you can add gui-only names to slots.
{
"id": "Optimist",
"desc": "She is very cheerful and is rarely in a bad mood. She enjoys what she does, a lot.",
"blocks": ["Pessimist"],
"effects": ["Optimist"],
"character_trait": true
},
def __setattr__(self, key, value):I'm not sure they are working atm.
if key in self.STATS:
if key == 'disposition':
# This is a temporary crutch:
if last_label.startswith("gm_"):
if key == "disposition":
value = value + hero.charisma / 2
if self.__dict__['effects']['Sibling']['active']:
if self.__dict__['effects']['Introvert']['active']:
value = value + int((value + self.__dict__["stats"]['disposition'])*0.2)
elif self.__dict__['effects']['Extrovert']['active']:
value = value + int((value - self.__dict__["stats"]['disposition'])*0.6)
elif self.__dict__['effects']['Impersonal']['active']:
value = value + int(round((value - self.__dict__["stats"]['disposition'])*0.1))
else:
value = value + int(round((value - self.__dict__["stats"]['disposition'])*0.4))
elif self.__dict__['effects']['Introvert']['active']:
value = value - int((value - self.__dict__["stats"]['disposition'])*0.2)
elif self.__dict__['effects']['Extrovert']['active']:
value = value + int((value - self.__dict__["stats"]['disposition'])*0.2)
elif self.__dict__['effects']['Impersonal']['active']:
value = value - int(round((value - self.__dict__["stats"]['disposition'])*0.3))
# This is a temporary crutch:
if last_label.startswith("gm_"):
if key == "disposition":
value = value + hero.charisma / 2
And looks like it works now, although numbers are not integer :)
They were xp related? I am on android atm...Yeap. I think it was x1.2 and x0.8 exp.
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 94, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 81, in script call
call next_day_calculations
File "game/library/screens/next_day.rpy", line 238, in script
python:
File "game/library/screens/next_day.rpy", line 298, in <module>
pytfall.next_day()
File "game/library/classes - support.rpy", line 127, in next_day
char.next_day()
File "game/library/characters/classes - characters.rpy", line 4074, in next_day
result = self.auto_buy(amount=randint(3, 7))
File "game/library/characters/classes - characters.rpy", line 1681, in auto_buy
hasitems = set([items for i in self.inventory]) if self.inventory else set()
KeyError: <store.Item object at 0x0F1013D0>
While running game code:
File "game/script.rpy", line 110, in script
python:
File "game/script.rpy", line 116, in <module>
chars = load_characters("chars", Char)
File "game/library/functions - loading_data.rpy", line 227, in load_characters
char.init() # Normalize!
File "game/library/characters/classes - characters.rpy", line 3244, in init
setattr(self, stat, self.get_max(stat))
File "game/library/characters/classes - characters.rpy", line 3317, in __setattr__
if key == 'vitality' and effects['Drowsy']['active']:
KeyError: 'Drowsy'
I wonder what will happen if autoequipment system will use an item with "jump_to_label" field. It probably should be forbidden.
Why not just call the smallweapon slot the 'offhand' slot as most other RPG's? Or even just the 'secondary' slot."Secondary" slot is a very vague name. And offhand is asymmetrical to the Right Hand slot.
It appears that your old normalizations prevent vitality based effects from working (and also starting the game if said effects exist).Code: [Select]While running game code:
File "game/script.rpy", line 110, in script
python:
File "game/script.rpy", line 116, in <module>
chars = load_characters("chars", Char)
File "game/library/functions - loading_data.rpy", line 227, in load_characters
char.init() # Normalize!
File "game/library/characters/classes - characters.rpy", line 3244, in init
setattr(self, stat, self.get_max(stat))
File "game/library/characters/classes - characters.rpy", line 3317, in __setattr__
if key == 'vitality' and effects['Drowsy']['active']:
KeyError: 'Drowsy'
Those are quest consumables only... so they should be filtered out the first thing.Quest? Nope, just consumables with unique effects. Like
$ h = eqtarget.get_max("health")-eqtarget.health
$ eqtarget.health += int(0.5*h)
$ h = eqtarget.get_max("vitality")-eqtarget.vitality
$ eqtarget.vitality += int(0.5*h)
$ eqtarget.mp = 0
$ eqtarget.remove_item("Emerald Tincture")
jump char_equip
"Secondary" slot is a very vague name. And offhand is asymmetrical to the Right Hand slot.
If you want to 'pair' it with the right hand slot, that slot would be called 'Main' hand, or 'Primary' which is understood as generally the slot your big/primary weapon goes.Yeah, primary and offhand sound nice.
It looks like it should be i instead of item.Yeap, autobuying works again with that. Now bad news:
if key == 'vitality' and effects['Drowsy']['active']:
old_val = stats.get_stat(key)
mod_val = value - stats.get_stat(key)
if mod_val < 0:
mod_val = int(mod_val*.5)
value = int(round(old_val + mod_val))
It has to be changed somehow.
It has to be changed somehow.
I dislike "off/main" hand aliases but I can change them on my own play-through once the game is ready and force an override through hidden testing.rpy file if it bugs me through the development.The problem with right/left hand slots is they are not vague enough for left-handed characters. We kinda tell them to use main weapon/tool in their right hand as if it's their main hand, which is impossible. And left-handed characters are pretty common.
Honestly, I'd rather remove those job logs (*Edit: I am talking about stat logs here, not the text/event logs!) from the game and roll with the final, character next day "stats" logs only. We cannot reliably log pure "per event" changes because new system is smart and may redirect workers all over the place as it sees fit and encapsulating effect calculations in functions to show correct results plainly means that we'll have to do the same calculations 2 to 20 times just to display adjusted interim stat changes while knowing for 100% that final increase at the end of the day will account for everything...Ok, how about applying effects only in the very end? We can log as much changes as we need, but the resulting difference between yesterday and tomorrow vitality will be affected by the vitality effect. We even may write about effect doing its work somewhere in the log.
Ok, how about applying effects only in the very end? We can log as much changes as we need, but the resulting difference between yesterday and tomorrow vitality will be affected by the vitality effect. We even may write about effect doing its work somewhere in the log.
def on_the_run_effects_mod():
...
Speaking of aliases, shops filters still use raw slots names instead of them.
I am not sure what you mean here. We gather the stats from every ND event sequence and apply them once, during that application (or any application), effects are applied over them automatically.I don't get it. If they are already applied, then why self.loggs('vitality', -40) ignores the testing effect which should make it -20?
I don't get it. If they are already applied, then why self.loggs('vitality', -40) ignores the testing effect which should make it -20?
class Char():
...
char.vitality += 100 is where the magic happens.
class Job():
...
Job.events():
self.loggs('vitality', -40)
self.loggs('vitality', 20)
self.loggs('vitality', -30) # All three of this commands plainly log the change to a dict, they do not apply anything.
Job.end():
build_nd_event() # with raw data from self.loggs
for stat, value in self.loggs:
char.stat += value # This is where the actual magic is happening, but it is not exposed in any way or form to outside scopes.
class Char():
...
Char.next_day():
...
This method creates a copy of old stats dict.
On every next day, it checks new values vs old values, these are final, true, concrete values including all magic, newly equiped items and etc. So basically everything...
if self.AP > 0:
if self.health < 90:
txt += "She had some strength left left over today so she took some time to heal her wounds. \n"
self.health += self.AP*2
self.vitality += self.AP*4
else:
txt += "She had some strength left over today so she spent some time taking a break and having fun. \n"
self.joy += self.AP
self.vitality += self.AP * 5
and while self.worker.AP and not all([(self.worker.vitality + self.workermod.get('vitality', 0) >= self.worker.get_max("vitality") - 50),
(self.worker.health + self.workermod.get('health', 0) >= self.worker.get_max('health') - 5)]):
self.loggs('health', randint(2, 3))
self.loggs('vitality', randint(35, 40))
self.loggs('mp', randint(1, 3))
self.loggs('joy', randint(1, 2))
self.worker.AP -= 1
But it's not the point. Even if these events work one after another, there is no way for self.vitality += self.AP * 5 to give -60, and there is no way for 70-60=80, nor 70+60=80. And she doesn't even have any special traits with effects.
If you think about it, we might not even want to f*ck with jobs data. It might be confusing to both players and ourselvesOk, what about consumables? I did some testing, effects do not affect them.
while self.worker.AP and not all([(self.worker.vitality + self.workermod.get('vitality', 0) >= self.worker.get_max("vitality") - 50),
(self.worker.health + self.workermod.get('health', 0) >= self.worker.get_max('health') - 5)]):
I always can make custom effects by hacking your code directly.
Just now I added Left-Handed trait which makes all left-handed weapons/tools twice as effective, and vice versa for right handed ones. It's permanent, so there is no need recalculate stuff for it.
I can just as easily tie consumables to any other trait instead of rewriting the whole process of items control.
{
"id": "Mysterious Gray Ring",
"desc": "«If early day, or late at night, it's not my problem, I'll be alright. No cause you name is worth the fight, but if I'm bored, then yeah, I might.»",
"icon": "content/items/ring/gray_l.png",
"price": 5000,
"sex": "female",
"chance": 1,
"badness": 0,
"eqchance": 5,
"hidden": false,
"infinite": false,
"slot": "ring",
"max": {"joy": -50, "magic": 150, "mp": 150},
"mod": {"luck": 5, "defence": 100},
"min": {"joy": 50},
"evasion_bonus": 2,
"damage_multiplier": 0.05,
"defence_multiplier": {"melee": 0.1, "ranged": 0.05, "magic": 0.05},
"locations": ["Exploration", "Fishing"],
"goodtraits": ["Indifferent"]
}
And this one makes sure character will always have at least 5 mp. {
"id": "Rune Staff",
"desc": "This staff is constantly drawing energy from other planes of existence and channels it to its wielder.",
"icon": "content/items/sweapon/rus.png",
"price": 3000,
"sex": "unisex",
"chance": 10,
"badness": 50,
"eqchance": 50,
"hidden": true,
"infinite": false,
"slot": "smallweapon",
"type": "rod",
"max": {"magic": 100, "mp": 100},
"mod": {"magic": 40, "character": 50, "attack": -80},
"min": {"mp": 5},
"delivery_bonus": {"magic": 50},
"delivery_multiplier": {"magic": 0.1},
"locations": ["Exploration"]
}
In all other cases min field is almost cosmetic, because the chance of it being used is super low.I dunno what to do about max field yet...
But I bet that freezing stat is much easier than logic for min field.
Or you are against it?
Certainly. Food Poisoning and Caught a Cold, Poisoned effects are universal, and in fact already can be available for MC.
File "game/script.rpy", line 110, in script
python:
File "game/script.rpy", line 116, in <module>
chars = load_characters("chars", Char)
File "game/library/functions - loading_data.rpy", line 138, in load_characters
char.apply_trait(traits[trait])
File "game/library/characters/classes - characters.rpy", line 2420, in apply_trait
self.traits.apply(trait, truetrait=truetrait)
File "game/library/characters/classes - characters.rpy", line 306, in apply
char.disposition += trait.mod_stats.get("disposition", 0)
TypeError: unsupported operand type(s) for +=: 'float' and 'list'
for key in trait.mod_stats:
# We prevent disposition from being changed by the traits or it will mess with girl_meets:
if key in ["disposition", 'upkeep']:
setattr(char, key, getattr(char, key) + trait.mod_stats[key][0])
with if hasattr(char, "upkeep"):
char.upkeep += trait.mod_stats.get("upkeep", 0)
if hasattr(char, "disposition"):
char.disposition += trait.mod_stats.get("disposition", 0)
You probably don't have active characters with traits with bonuses to disposition, unlike me.
Because mod_stats expects a dict of lists. And in order to not create a separate field solely for disposition and upkeep you changed the code to read them from lists too, ignoring the second number in the list.
In "mod_stats": {"disposition": [200, 1]} the 1 means nothing.
Certainly. Food Poisoning and Caught a Cold, Poisoned effects are universal, and in fact already can be available for MC.
Does everything else related to stats/items/effects/traits work?I was thinking about a trait field or an effect which changes expected wages. But when I looked in the code yesterday, wages were 100% afk, so there is nothing we can do about it at the moment :)
We need to decide on how to handle MC's issues.In case of MC the game always should know how to ignore stats that he doesn't have. Otherwise problems begin much sooner due to unisex items which may have such stats too. I suppose adding all stats and hiding those he doesn't use is the best way.
- Add flags on content level (like: char_only=True would mean trait only for chars)Most likely such flags will be required for traits anyway. Some of them can be useful for MC, some cannot.
I was thinking about a trait field or an effect which changes expected wages. But when I looked in the code yesterday, wages were 100% afk, so there is nothing we can do about it at the moment :)
In case of MC the game always should know how to ignore stats that he doesn't have. Otherwise problems begin much sooner due to unisex items which may have such stats too. I suppose adding all stats and hiding those he doesn't use is the best way.
Most likely such flags will be required for traits anyway. Some of them can be useful for MC, some cannot.
After a negative reply to strong compliment in gm, game goes to main menu (open title). I think there is a return after a jump somewhere.Surprisingly, it was reported before by lamoli and I fixed it back then... Fixed again.
If character has very low vitality, all stats will be red at the equipment screen.
I added a simple alcohol system which allows you to get Drunk effect if you drink too much. The effect disappear on the next day no matter what, except it only does so for characters. MC can get the effect but it never disappears, meaning his effects system is not working as it should.
elif effect == "Drunk":
for key in self.effects["Drunk"]:
self.effects["Drunk"][key] = False
This code is the direct copy of your code from Food Poisoning effect, with a bit different mechanics of counters.
How about adding descriptions and tooltips for effects, just like traits have? Or you are against it?
{
"id": "Wild Flowers",
"icon": "content/items/gift/wf.png",
"desc": "This fresh bouquet of colorful flowers picked outside the city is guaranteed to brighten any girl's mood. It might not be enough to prevent her from getting mad at you for boning her best friend, but you'll be a step closer to that lofty goal.",
"price": 30,
"slot": "gift",
"chance": 80,
"dismod": 5,
"cblock": 1,
"infinite": true,
"type": "flowers",
"locations": ["General Store", "Look around"],
"traits": {
"Imouto": -10,
"Ane": 10,
"Impersonal": -20,
"Deredere": 20
}
},
will always give +5 disposition, completely ignoring the traits field. Probably because you rewrote traits container, since no one touched the gifts code for a while.
Actually the tech is the circling items paging :DYeah, I figured as much. It looks unusual, but impractical. With our type of inventory those few items could be visible at one single page :)
Yeah, I figured as much. It looks unusual, but impractical. With our type of inventory those few items could be visible at one single page :)
I added a simple alcohol system which allows you to get Drunk effect if you drink too much. The effect disappear on the next day no matter what, except it only does so for characters. MC can get the effect but it never disappears, meaning his effects system is not working as it should.
Code: [Select]elif effect == "Drunk":
for key in self.effects["Drunk"]:
self.effects["Drunk"][key] = False
This code makes little sense. It should destroy description, counter and disable the effect. I am too tired to try and find out why it is working for chars and not MC, it should mess up the effect for everyone.
This code is the direct copy of your code from Food Poisoning effect, with a bit different mechanics of counters.
Which needs to be updated as it kills description as well. It is still unclear why it works differently for MC and Chars. I'll see if I can figure it out tomorrow morning.::)
elif effect == "Unstable":
unstable = self.effects['Unstable']
unstable['day_log'] += 1
if unstable['day_log'] == unstable['day_target']:
self.joy += unstable['joy_mod']
unstable['day_log'] = day
unstable['day_target'] = day + randint(2,4)
unstable['joy_mod'] = randint(20, 30)
if dice(50):
unstable['joy_mod'] = -unstable['joy_mod']
File "game/library/screens/next_day.rpy", line 81, in script call
call next_day_calculations
File "game/library/screens/next_day.rpy", line 228, in script
python:
File "game/library/screens/next_day.rpy", line 288, in <module>
pytfall.next_day()
File "game/library/classes - support.rpy", line 133, in next_day
hero.next_day()
File "game/library/characters/classes - characters.rpy", line 3317, in next_day
super(Player, self).next_day()
File "game/library/characters/classes - characters.rpy", line 2763, in next_day
self.apply_effects(key)
File "game/library/characters/classes - characters.rpy", line 2710, in apply_effects
self.joy -= 5
File "game/library/characters/classes - characters.rpy", line 1274, in __getattr__
(self.__class__, key))
AttributeError: <class 'store.Player'> object has no attribute 'joy'
We need to check disposition mods on next day... they are absurdly powerful ranging from -130 to 350 in just 14 days without any user interactions... but it might be old code that just gives incorrect bonuses when wages are paid.Wages code is mostly disabled anyway.
We need to check disposition mods on next day... they are absurdly powerful ranging from -130 to 350 in just 14 days without any user interactions... but it might be old code that just gives incorrect bonuses when wages are paid.Paying wages is a perfectly normal thing. It shouldn't increase disposition infinitely. At best it could give +1 as long as disposition is < 0, or even < -100.
Paying wages is a perfectly normal thing. It shouldn't increase disposition infinitely. At best it could give +1 as long as disposition is < 0, or even < -100.
If character has very low vitality, all stats will be red at the equipment screen.
How about improving the load_frame_by_frame_animations_from_dir function to automatically register webms too with name=folder name? I tried to, but since it runs before other places, it doesn't know about MovieLooped function and cannot use it.
we'll need to come up with proper names at some point, for once, you enter a menu called "attacks" and almost every options ends with "Attack"... it's about the same as adding "Spell" after every magical skill. Also some of the names are too long, menu names should be used to create abbreviations of some kinds.Done, I'll push it a but later.
Someone opened a Pull request in the github, I'll go over it tonight.
You can do a lot in this area: https://github.com/XelaPy/PyTFall/issues/2 (https://github.com/XelaPy/PyTFall/issues/2)In terms of logic maybe. Making a starting screen where you pick options for MC before the game begins is a different story.
It's weird because I was sure that we've fixed it.Found it, you removed the fix for some reason 3 months ago during stats rewriting...
In terms of logic maybe. Making a starting screen where you pick options for MC before the game begins is a different story.
Also, he could use effects which affect all characters under his command. That's something we don't have in the code, we only check characters own effects.
For example, there could be effect which restores 1 vitality per day for MC. And there could be a different effect which does it for all characters. Since they are different, I cannot just check if hero.effect.['active'].
Found it, you removed the fix for some reason 3 months ago during stats rewriting...
And I've fixed this! :D Two days ago: https://github.com/XelaPy/PyTFall/commit/b970050530ed24329e4fa321510946f1e95710ce (https://github.com/XelaPy/PyTFall/commit/b970050530ed24329e4fa321510946f1e95710ce)Nope. I dunno what it fixes, but definitely not red text at the equipment screen. I restored your old fix a hour ago, and it really fixes it.
But MC has less stats, cannot have personality, race or body type. In order to have many traits there should be effects that affect characters. Otherwise there is not much for traits to change.
Nope. I dunno what it fixes, but definitely not red text at the equipment screen. I restored your old fix a hour ago, and it really fixes it.
I need help with timed progress bar in the last push. I made it based on this (https://www.renpy.org/wiki/renpy/doc/cookbook/Timed_menus) example, and yet it doesn't work like it supposed to ::)
It fixes the stats going red... remove your variable and check it yourself. Or don't waste your time... two fixes is better than one :)Of course I did it before pushing. Nami has 0 vitality by default thanks to the testing file. If you go to her equipment screen and select an item from MC inventory, all her stats will become red without the $ tempc = "#F5F5DC" fix.
Just wonders of screen language again, when you cannot pass variables to a screen like you can to a function, not without the "default" statement.
$ git gc --prune=now
$ git remote prune origin
I wrote a whole mess of logic where you can use 4 different labels that the game will autocall. You can reuse them, create new once and etc. Options here are limitless and very interesting, not to mention, potentially the most important towards gameplay.I don't understand what are you talking about here. There is nothing unusual in your recent pushes.
I don't understand what are you talking about here. There is nothing unusual in your recent pushes.
Take a look/play around with mc_choices.rpy file, there are some comments there as well. It's in the mc_setup folderSadly, the setup is absolutely incompatible with dual class system. I'd prefer a dual menu where you select traits/classes for MC's mother and father at the same time, which in turn give certain traits/classes for MC. Including dual classes if parents classes are different.
BTW, I am getting more and more issues with Git, after some (small bit of) research, this was one of the first suggestions:Code: [Select]$ git gc --prune=now
$ git remote prune origin
$ git fsck --full
I wrote short testing code which should use the hidden matrix to hide 5 objects at the screen.
Either I don't understand something, or the hidden matrix is broken. By default there are zero areas at the screen. I know it for sure, because for testing I created them with 500x500 size, impossible to miss. But once I changed alpha of hidden matrix buttons to 1, there is always one single area at the top left corner, with zero randomness. Even though the corner is always empty with the old alpha = 0.001.
I dunno why your hidden matrix acts like that, even if I gave it incorrect dict somehow, it acts differently with different alpha.
I had the very same issues when tried to use it for fishing screen before making different screen with imagebuttons.
Sadly, the setup is absolutely incompatible with dual class system. I'd prefer a dual menu where you select traits/classes for MC's mother and father at the same time, which in turn give certain traits/classes for MC. Including dual classes if parents classes are different.
Also not all options should be hierarchical - in fact, most shouldn't. Strict hierarchy complicates things a lot.
For example, MC's mother could have any race, giving MC certain race bonuses. But race cannot be a part of big, strict hierarchy, it's not tied to class for example.
Basically, the setup screen is so old compared to the current concept that it would be easier to use multiple renpy menu statements to setup MC than use the setup screen.
With this you can check your git history.Code: [Select]$ git fsck --full
It may show dangling blobs. They are harmless, usually. Git tries to keep almost anything in history, even if you staged something once. They idea is that you can get back to the state of the code at that time. I believe after a while you can get some that lost their reference. The prune will indeed remove those but you may also lose some history.
Do you have a use case? I never tested that screen and I was half-dead when I coded it.Yeap, beach screen, diving option, label city_beach_diving_checks. I stopped coding diving immediately after failed test of hidden matrix.
It's... creative, so we'll have to get creative as wellIt will never support dual classes decently anyway. I'm fine with it, but you wanted dual classes support for MC too.
Yeap, beach screen, diving option, label city_beach_diving_checks. I stopped coding diving immediately after failed test of hidden matrix.
It will never support dual classes decently anyway. I'm fine with it, but you wanted dual classes support for MC too.
And why the heck not? It doesn't have to be literal and precise... Any one of the four choices can add both base traits. Some selections could add one (at double power by default of the design).No, such system, while possible, is too chaotic for me to maintain. If you want double classes, you will have to run the setup screen twice, with the current setup screen I only can do it for single class.
dive_list = []
while len(dive_list) < 5:
our_loot = list(i for i in items.values() if "Diving" in i.locations and dice(i.chance))
if our_loot:
item = random.choice(our_loot)
else:
item = None
dive_list.append(item)
underwater_loot = {}
i = 0
while len(underwater_loot) < 5:
m = random.random()
n = random.random()
underwater_loot[i] = [(100, 100), (m, n)]
i += 1
$ underwater_loot = {choice(list(i for i in items.values() if "Diving" in i.locations and dice(i.chance)) or [None]): [(100, 100), (random.random(), random.random())] for i in range(5)}
Wtf... There is no place in MC inventory where you can see loot and resources, except the All filter. Again.
While running game code:
File "game/library/initialization.rpy", line 1, in script
init -999 python:
File "game/library/initialization.rpy", line 29, in <module>
import jsonschema
IOError: [Errno 2] No such file or directory: u'game/python-packages/jsonschema\\schemas/draft3.json'
???
I usually check if AP > 0 before even giving access to the part where hero.AP -= 1, I just didn't added it there yet.
And it's not like we have dozens buttons styles to choose from. You them everywhere, and so do I.
...
Did you get this error?Code: [Select]While running game code:
File "game/library/initialization.rpy", line 1, in script
init -999 python:
File "game/library/initialization.rpy", line 29, in <module>
import jsonschema
IOError: [Errno 2] No such file or directory: u'game/python-packages/jsonschema\\schemas/draft3.json'
Second, when you push/create pull requests, try to make sure that game can run with them.
Also, we're all using testing.rpy files that are not version controlled in order to setup our own testing scenarios for whatever we're working on at that point. Those files assume that Characters, Buildings, Items, Traits, Businesses and Battle Skills can be instantiated outside of loading function so every time you change loading routines (like changing the way adverts are loaded or changing data structure you're loading them from), stuff in testing file breaks down. It's ok to mess with that stuff in order to improve it, but please post changes relevant to creating/setting up those objects to the forum so it's easier to adjust without going over all the commits.
ok, do not change, or rarely, how stuff is loaded, and at least report changes. got it.This (https://www.dropbox.com/s/5uiox4ka1oisgu5/testing.rpy?dl=0) is our default testing file, which Xela updates every time something is changed to make sure the game can work in the dev mode despite having unfinished parts here and there.
I do. In this case it worked for me, Linux.
Renpy does funny things with paths and I fixed it badly when I tried to get the jsonschema module working, sorry. The bug got exposed for you (not me) when I moved the import jsonschema outside the class.
ok, do not change, or rarely, how stuff is loaded, and at least report changes. got it.
which Xela updates every time something is changed to make sure the game can work in the dev mode despite having unfinished parts here and there.
I don't understand the logic behind so called "classes" at the mc setup screen. Most likely it's incompatible with the current concept. I'll just ignore it and disable parts of the code which cause CTDs because of that.
I need to know how to set base classes for MC, since they are more than just traits. At first I tried the "classes" at the setup screen, but it brought nothing but CTDs.
Finished one warrior branch at the setup screen, it's pretty fun :)
This (https://www.dropbox.com/s/5uiox4ka1oisgu5/testing.rpy?dl=0) is our default testing file, which Xela updates every time something is changed to make sure the game can work in the dev mode despite having unfinished parts here and there.
testBuilding.add_adverts(filter(lambda a: a['name'] in ["Sign", "Flyers", "Magazine", "Billboard", "Girl", "Celebrity"], adverts))
BE is in a pretty good condition, it won't be hard to make warriors/mages MC setups. Same for interaction-based setups.
The jobs, however, is something I cannot hack on my own, at least in their current condition. I simply don't see a place where those bonuses should go in the code.
Code: [Select]testBuilding.add_adverts(filter(lambda a: a['name'] in ["Sign", "Flyers", "Magazine", "Billboard", "Girl", "Celebrity"], adverts))
testBuilding.add_adverts([a for a in adverts if a['name'] in ["Sign", "Flyers", "Magazine", "Billboard", "Girl", "Celebrity"]])
I need to know how to set base classes for MC, since they are more than just traits. At first I tried the "classes" at the setup screen, but it brought nothing but CTDs.
And I still wonder how to set base classes in the setup menu.
As far as I understand, the system forces me to give classes exactly where it wants it (not gonna happen, different setups require different approach).
Of course. Not to mention the support for a single class.
I especially dislike how the last setup choice only gives a minor item in the caravan story, it is next to useless. While I give unique (really unique) traits depending on mother race :)
I added one commit which changes the screen tag displayed in the dev menu to a button to open at the screen or label in your editor. Does this work for you? In Linux it works, in wine it did not entirely. If not it should just display as previously. it was displayed however as button, but the link did not resolve. But just maybe this is just wine?Yep, works perfectly. That's an awesome option :)
preferable at least add one character and one random character to the repo.I can add a few really small packs. But I have no idea how to make git extensions stop ignoring a certain folder in the chars folder. I tried a few things in the gitignore file, they didn't worked.
Also I added an issue (https://github.com/XelaPy/PyTFall/issues/189)
I can add a few really small packs. But I have no idea how to make git extensions stop ignoring a certain folder in the chars folder. I tried a few things in the gitignore file, they didn't worked.
Guys... come on, this is not even remotely useful. Anyone who seriously wanted to help with development so far figured it out or asked us for instructions.True. But we gonna release the game with default packs anyway, it won't be 100% empty. Might as well add them to repo. For example, the village will cause ctds without naruto chars.
True. But we gonna release the game with default packs anyway, it won't be 100% empty. Might as well add them to repo. For example, the village will cause ctds without naruto chars.
they kept plaguing me with emails long after the fact because account could not be deleted and whatever the method they used to check, kept finding new violationsLol :D
Lol :D
We probably could wait until lamoli makes a rendered random pack, which won't be affected by copyright.
I pushed a fix for your changes. You checked wrong folders names, as a result the game stopped seeing my packs.
default prereqs = exist(["content/chars/", "content/rchars/"])
not
default prereqs = exist(["content/char/", "content/rchar/"])
Yep, works perfectly. That's an awesome option :)
preferable at least add one character and one random character to the repo.
Guys... come on, this is not even remotely useful. Anyone who seriously wanted to help with development so far figured it out or asked us for instructions.
Ok, I see your point. scrap 3, it was mostly about clarifying the instructions anyway, but maybe the banner when missing is clear enough already.
Search for "Sword Master" trait in rpys and look how it works.
for key in item.max:
if "Left-Handed" in self.traits and item.slot == "smallweapon":
self.stats.max[key] += item.max[key]*2
elif "Left-Handed" in self.traits and item.slot == "weapon":
self.stats.max[key] += int(item.max[key]*0.5)
elif "Knightly Stance" in self.traits and key == "agility" and item.max[key] <0:
self.stats.max[key] += int(item.max[key]*0.5)
elif "Sword Master" in self.traits and item.type == "sword":
self.stats.max[key] += int(item.max[key]*1.5)
else:
self.stats.max[key] += item.max[key]
The easiest way to simplify it would be if "Left-Handed" in self.traits and item.slot == "smallweapon":
max_modifier*2
...
self.stats.max[key] += int(item.max[key]*max_modifier)
But it won't work for traits like Knightly Stance, since it should work only for agility [key], which we don't see outside of the "for" loop.
"Regeneration": {"active": False, "desc": "Health restores every day.", "amount": 0}This one will restore the amount of health per day.
"effects": ["Regeneration"],
I need to specify effect amount somehow.
I rewrote that code bit but your version was perfectly fine... and there isn't a better way to do it other than maybe pushing conditioning to JSONs. I am not really sure if that would result in better system.Ok, I restored the old code, since with the new one all items maxes just stopped working...
You can't really pass arguments through that fields without messing with code which loads them.I hoped it's possible to trick the system somehow, like give it a list or a dict instead of string :)
I hoped it's possible to trick the system somehow, like give it a list or a dict instead of string :)
committed some json schema updates. should not interfere and probably not too interesting, although this (https://github.com/picobyte/PyTFall/blob/master/game/schema/data_types.json) file gives you an overview of most of the current concepts.I'm 100% sure that we don't have spells like "Fire 1", "Fire 2", "Fire 3" in the assets rpy. Those are remainings of very old version of BE in some old parts of the code like arena, which will be rewritten. All real, existing spells are only in be/assets.rpy.
Text fields at the mc setup screen don't have scrolling. It especially affects the right field which shows text for two choices at the same time. As a result, more or less big texts cannot fit in.
There is plenty of unused space at the setup screen. The whole right part can be much higher, and the left text filed can be higher too.
Actually that was discussed and we decided to remove scrolling from there in favor of shorter text cause it looked shitty and broke a decent design. That was also where labels came from, you can unfold story lines, explanations, awards and etc. in there while providing only the most basic info in the textboxes.How do you propose to do it exactly with the help of labels? Every time player clicks on icon we interrupt the whole mc setup to show text related to that icon? If yes, then it's a terrible design.
How do you propose to do it exactly with the help of labels? Every time player clicks on icon we interrupt the whole mc setup to show text related to that icon? If yes, then it's a terrible design.
I'm 100% sure that we don't have spells like "Fire 1", "Fire 2", "Fire 3" in the assets rpy. Those are remainings of very old version of BE in some old parts of the code like arena, which will be rewritten. All real, existing spells are only in be/assets.rpy.
Let's see... Things that tiers could control:
- base wages. Irl your position is clearly visible, unlike hypothetical list of stats, and wage is based on it before everything else.
- max money income for jobs which have income. Even if you are skilled, low position can prevent you from using skills to the fullest. Perhaps with diminished returns, ie at some point increasing skills/stats becomes almost unnoticeable in terms of income until you raise the tier.
- clients "tiers" can be tied to chars tiers. Elite clients would like to be served by elite workers, and will be unhappy and leave otherwise.
- for warriors it becomes complicated because they don't generate income directly. It could affect available arena events and SE areas, you need high tier warriors to have access.
- equipable items and spells might have min_tier field required to equip/use them. This is especially true for weapons and spells, you can't just equip them and wear like some dress, you should know how to use them properly.
- skills can be limited by tiers directly, and become unlimited only at the highest tier.
Before we continue, are you going to use tiers for buildings/businesses? Or only for chars?
Because businesses can have tiers depending on average tier of used chars. And higher tiers attract better customers.
Warriors probably could use their own tiers of some kind for SE, but it can be a part of SE itself.
Slaves tiers can be limited. If max tier is 10, they could have only 3-5.
Backgrounds for characters interactions will be based on their tiers. We have multiple rooms bgs from cheap to expensive, because I planned it for a long time :)
There should be requirements of some kind for hiring high tiers. Maybe hero level, or fame, or high disposition.
If you think it's worth it, we can leave SE for post beta and focus on jobs and businesses instead, refactoring them right now.
Btw special fields for traits and items that work inside SE, like the ones for BE, will be welcomed. For better MC setups too.
I mean stuff like skill/field which helps to avoid traps. These things basically affect only those special events I asked for. Ie we have a trap event (because traps are events). Base chance to get into trap is 50. But there is a skill/field which can reduce it for all traps.
We only have one exploration skill. It doesn't give much place for imagination - or MC setups.
I suppose I can just check for some trait instead, like Trap Master. But then I need means to do so, ie check the whole team inside SE for this trait when the trap event begins. It's probably the best bet in order to avoid complexity with new fields.
Leaves plenty of room, we didn't even start with casanova or manager mp setups yet.Not for explorer class. If you only can have high exploration skill to be good in exploration, you can't have different brunches in MC setup. They all will have high exploration -> meaningless to make brunches in the first place.
Old design? You mean that time when you wanted to build maps from tiles? Is it still legit for simpy?
Not for explorer class. If you only can have high exploration skill to be good in exploration, you can't have different brunches in MC setup. They all will have high exploration -> meaningless to make brunches in the first place.
I don't recall terrain modifiers newer than that. Where is this code? I only see tiles in the library/exploration folder.
We already did, here (http://www.pinkpetal.org/index.php?topic=3752.0). You didn't explain what do you mean exactly by hazards, but I figured there will be comments in the code anyway :)
For better micromanagement I've adapted (https://github.com/picobyte/PyTFall/commit/a9e6aaa71827d80a1f986e929a47eb26eb376d8d#diff-2a939f2e950a5042264769d111fe22ce) the char_list screen. Girls on page get a selection box that can also be manipulated with buttons 'These" (to toggle selection on page) 'All' to select all with current filters or 'None'. Filters are also diplayed differently.
Currently I've implemented one mass action: training, but I think it would be useful to add more, for instance
* equipment
* activity
* location
* control
* get rid
The implementation for a selection in training.rpy and training - classes.rpy is somewhat hackish, the required functions are now recursed in a case of a list. Maybe they should by modified to expect a list in any case, with at least one character.
BTW I removed the sprite editor commit from my branch for now. It has save/restore issues for instance, so it's not yet ready.
Oki, So it is not possible to set multiple characters up for training?
What do you mean by "sprite editor"?
I added its code yesterday as a commit to my branch but removed it for now as I think I cannot merge it yet. It is from a renpy project I wrote earlier to compose a body, using multiple images, using layers and the renpy camera code, the former project wasn't published. I'll add the code in a development branch, but it requires art for which I used Akabur's witch trainer images combined with an old scarecrow kisekae set from the owl. I'm not sure want their art shared.
For better micromanagement I've adapted (https://github.com/picobyte/PyTFall/commit/a9e6aaa71827d80a1f986e929a47eb26eb376d8d#diff-2a939f2e950a5042264769d111fe22ce) the char_list screen. Girls on page get a selection box that can also be manipulated with buttons 'These" (to toggle selection on page) 'All' to select all with current filters or 'None'. Filters are also diplayed differently.Huh? But I don't see anything new at the chars_list screen, even after force recompile...
* equipment
* activity
* location
* control
and maybe: get rid
The decreased space is to allow more mass actions except training.
I deleted some tracks that cannot be easily looped, which led to awkward silence in the middle of battle. I think I deleted the one you talking about by mistake, it was already looped properly. If we taking about the same track, of course. I restored it.
But I am not going over new code after every push.Fine with me. Just reporting changes here.
If there is a viewport there already or you put one in, this post is not relevant.It was already in place there.
I've added a group equip implementation. Items are only shown, retrieved or given if all members of the group have an item or can be provided.
...meaning schools and interactions gonna get wrecked?
- xrange does not exist in python 3, for some reason you use it a lot in the code.
- .next() method does not exist in p3, we use it in quests system and calendar
- zip(), filter() and dictionary methods don't return lists any longer. We don't use zip and filter much, but dictionaries are used a lot. Also has_key method is gone, which is used in a few places.
- Trying to equip items to a group of characters at least one of which doesn't want or cannot equip it causes ctd.this seems fixed now
- Transfer button causes ctd. It should either be disabled or preferably lead to transfer screen with all of the chosen chars and mc.Some of it fixed, but there are some issues still.
- Some GUI stuff is still misaligned.better now?
And most importantly:
- ALL item operations must go through their respective functions defined in item functions file. You should not pass items between inventories directly or equip them directly. There are cases where this doesn't matter but normal transfer/equipment is never one of those cases.
Reason for this is that in PyTFall a free character may refuse to receive, equip or give away an item. There are also counters in place that attempt to track how many items were transferred between characters (for character to which that matters) so they would give back an item that MC gave them but not one of their own items.
There may also be rules that prevent character transferring or equipping specific items.
All of those functions where such things are relevant take a "silent" argument, when set to True, characters do not try to explain or complain why they don't want to do some specific thing which is useful when dealing with them in bulk.
this seems fixed now
Some of it fixed, but there are some issues still.
better now?
I think the checks should be in place. Are you aware of a path where checks do not happen?
Btw i wanted to pull from repo to see whats new but now there is 2 branch (Master and Femtobyte) who got the latest things ?
Speaking of consumables, don't forget that ideally cblock field should work in SE too.
"JoNt2"?Jack o nine Tails 2 ( clone project in python )
Are you still planning to put a rgirl pack together?
Jack o nine Tails 2 ( clone project in python )
You didn't know? Here (https://github.com/Gfurst/Jack-o-Nine-2) they are.
I wonder how different their engine, godot, from renpy, there is not much info about the differences.
If item has both ctemp and addeffects fields, will ctemp affect addeffects?
I'm not asking to add something. I need to know how it works to make items. Because items code is so complicated, I cannot check it directly. And testing might not give valid results because it's been a while since it was written, so it might not work as intended after so many pushes.
I am not 100% sure if it will auto disable effect after x days but I can check.That's kinda very important. If I add effect, I should know if it's permanent or not.
and it will disappear sooner than ctemp ends, I need to be sure it won't cause ctd.
if hasattr(self, "effects"):
for entry in item.addeffects:
if self.effects[entry]['active']:
self.disable_effect(entry)
for entry in item.removeeffects:
if not self.effects[entry]['active']:
self.enable_effect(entry)
Speaking of consumables, don't forget that ideally cblock field should work in SE too.
I believe I fixed most issues
There is still at least one issue with transfer, it doesn't seem to go through the respective func. If you mass transfer an item to a free char, they never seem to want to give it back. It works normally when old way with just the one char is used.
Special consumables with scripted effects (they have jump_to_label field in json) are either don't work as they should or give CTD. Because they always expect a single valid target.
Such items should be unavailable for mass equipment.
This seems fixed now, free characters seem more selective. Or is there still odd behaviour?
I've disabled their equipment or transfer for groups. Is that sufficient?Yeah, I don't see any more problems there.
Yes, but I am not sure where :( I still managed to break it through mass transfer somehow, gonna test it some more right now.
Yes, but I am not sure where :( I still managed to break it through mass transfer somehow, gonna test it some more right now.
I'd also like to thank you for your persistence, most coders give up quickly after finding out how much logic there is behind the game and leave the mess to us:
Dus: Van haarte bedankt :)
{
"id": "Running Boots",
"desc": "Boots made of firm but light leather. Just wearing them arouses a desire to run.",
"icon": "content/items/feet/rb.png",
"price": 125,
"sex": "unisex",
"chance": 70,
"badness": 75,
"eqchance": 25,
"hidden": false,
"infinite": false,
"slot": "feet",
"type": "dress",
"evasion_bonus": 1,
"max": {"vitality": 15},
"mod": {"agility": 10, "refinement": -20},
------------------------------^^^^^^
"mod_skills": {"refinement": [0, 0, -0.08, 0, 0]},
"locations": ["Tailor Store", "Ninja Shop"],
"goodtraits": ["Athletic"]
},
Edit: If the json is incorrect, there are more items with the same issue elsewhere.
Yeah, refinement used to be a stat 2 years ago because we didn't have skills system, now it's a skill. It's hard to catch all such cases manually.
content/rchars/random_classes/data_Dark_Elf.json
content/rchars/random_classes/data_Noble_Elf.json
content/rchars/random_classes/data_Ranger_Elf.json
No problem, can list the ones, they are listed in the backtrace after "strict" schema validation. For the items in git I have removed the refinement stat entries. Or is that too simple? Also some characters have it, they are not in git.Code: [Select]content/rchars/random_classes/data_Dark_Elf.json
content/rchars/random_classes/data_Noble_Elf.json
content/rchars/random_classes/data_Ranger_Elf.json
If there's more out of date, take a look at the schema/data_types.json. I can fix entries in json semi-automated, but I'll have to tackle each one at a time.
So I was thinking, we have char_equip screen and the item_transfer subscreen. I like the item_transfer screen layout, but is there anything that you can do here that you cannot do in the char_equip screen?Transfer items directly between characters.
So I was thinking, we have char_equip screen and the item_transfer subscreen. I like the item_transfer screen layout, but is there anything that you can do here that you cannot do in the char_equip screen?
Transfer items directly between characters.
So when I suggested loading a "group" into transfer screen, I did not mean your new sorting/grouping class. The idea was to just take the selected characters list, add MC there and feed that data to items transfer screen so you could transfer between character of your choice individually.
Also, I now display the odd indexed characters to the left, the even to the right.
core loop for SE tonight
...
There is nothing wrong with finding unbeatable enemy. That means you need higher level and/or different skills.
You know... as you write code, ideas pop into the head. It's almost criminal that we do not have an item like "Tent" for SE :D Maybe I can set it up as a flag or something...We even can have different types, with more expensive ones giving better bonuses after rest.
We even can have different types, with more expensive ones giving better bonuses after rest.
You don't need to cover every combination... it's like in Babe Runner, our artist drew like 19 separate images for facial expressions and I wrote the code for combining them. Turned into like 500 unique expressions. It's fun as hell but not usable in practice.No, there are not too many combinations. On the contrary, there are not enough magic classes to make as many pure mage setups as fighters classes have.
mc_stories["Mage"]["choices"] = OrderedDict(Arcane Knight="content/gfx/interface/images/mc/arc.png") doesn't work.
mc_stories["Mage"]["choices"] = OrderedDict("Arcane Knight"="content/gfx/interface/images/mc/arc.png") doesn't work too.
I need it to have two words.
mc_stories["Mage"]["choices"] = OrderedDict()
mc_stories["Mage"]["choices"]["Arcane Knight"] = "content/gfx/interface/images/mc/arc.png"
mc_stories["Mage"]["choices"] = OrderedDict({"Arcane Knight": "content/gfx/interface/images/mc/arc.png"})
I don't see any traces of FG. Or, rather, there were more traces of it before your push, now I don't see anything related to it :D
Yeah, the game tells it sends a team to exploration with your current testing file. And I see 3 new random characters called Test Fighter in the girl list, which are located in TestBuilding and do nothing. That's it.
Btw how are we supposed to pick location for explorations without exploration screen?
It's been there for a couple of month. You click buildings ==> details under Exploration GuildAtm there is nothing but TestBuilding at the Building screen. I can't see the guild anywhere.
Atm there is nothing but TestBuilding at the Building screen. I can't see the guild anywhere.
Yeap. Force recompile didn't helped this time, deleting helped.
- InSlots and ExtSlots are absolutely counterintuitive, I can't even begin to guess what are they.
- Items and enemies probably should be hidden until have been found at least once. Maybe not enemies, but definitely items.
- Drag and Drop at the team screen is not complete. Once you dropped a character to the team frame, you cannot drop another character instead if you changed your mind, AND you cannot drag and drop the selected character out of the team frame to free the slot. Due to such inconstancy d&d is not as useful as it could be.
I can't find a way to rename teams.
i don't understand why gui became messed up (https://www.dropbox.com/s/xpi0cl8xpio2fk0/3.jpg?dl=0) when we did nothing to that screen. The size is still 330 everywhere, yet the left frame is thinner now, which results in circle frame looking too big (in fact it's the only thing which still has correct size).
Xela, how about adding an experience field to mobs which determines base exp reward for killing the mob inside SE/arena? The resulting exp could be something like base exp + mob level*5.
Also looks like the pose importer didnt bring facial expressions >.<
(now i wish i was better with python to improve this scrip for blender)
- Drag and Drop at the team screen is not complete. Once you dropped a character to the team frame, you cannot drop another character instead if you changed your mind, AND you cannot drag and drop the selected character out of the team frame to free the slot. Due to such inconstancy d&d is not as useful as it could be.
In this case we'll need means to clear the whole team instantly - instead of clicking on every character manually.
When you use equip and profile options, they sometimes (pretty often) become red (https://www.dropbox.com/s/xpi0cl8xpio2fk0/3.jpg?dl=0).
...
- 'health': [100, 0, 100, 200],
+ 'health': [200, 50, 200, 400],
I hoped it will prevent health going down to 0 when too many traits/effects that decrease health are involved. You mentioned that BE operates separately from the main game, I never thought it will be affected too.
# Useful keymappings (first time I try this in PyTFall): ====================================>Curious example of using additional mouse buttons in the code. But it would work much better if you could equip/unequip without selecting the item first via left mouse button, just by pointing at it.
if focusitem:
key "mousedown_2" action Return(["item", "equip/unequip"])
else:
key "mousedown_2" action NullAction()
key "mousedown_3" action Return(['control', 'return'])
key "mousedown_4" action Function(inv_source.inventory.next)
key "mousedown_5" action Function(inv_source.inventory.prev)
key "mousedown_6" action Return(['con', 'return'])
Curious example of using additional mouse buttons in the code. But it would work much better if you could equip/unequip without selecting the item first via left mouse button, just by pointing at it.
We still have old slots names (aka smallweapon) at the equipment screen, inside the equipment doll slots.
Ideally we could use there slots icons instead of slot names. Like the ones we use for filters, but with transparent background. Too bad we don't have the source pictures used by Gismo when he made the filters icons.
Without the source it's not an easy task to find suitable icons, so meanwhile aliases are better than raw names.
key "mousedown_3" action Return([...']) is a great way to exit beach minigames at any point without finishing them, if one desires to.
Care to suggest some improvements? 8)
def setSelection_for_chars_list(sel, lst, value="from_lst"):
for l in lst:
sel[l.name] = l if value == "from_lst" else None
char_list_selection = { c.name: None for c in char_lists_filters.sorted }
button: # select all on current listing, deselects them if all are selected
xysize (66, 40)
action Function(setSelection_for_chars_list, char_list_selection, chars_list[0] + chars_list[1], value=None if all(char_list_selection[x.name] for x in chars_list[0] + chars_list[1]) else "from_lst")
text "These"
$ chars_on_page = set(chars_list[0] + chars_list[1])
button: # select all on current listing, deselects them if all are selected
xysize (66, 40)
if char_list_selection.issuperset(chars_on_page)):
action SetVaraible("char_list_selection", char_list_selection.difference(chars_on_page))
else:
action SetVaraible("char_list_selection", char_list_selection.union(chars_on_page))
text "These"
elif isinstance(var, (dict, renpy.python.RevertableDict)):
elif isinstance(var, (Char, rChar))
elif isinstance(var, dict):
elif isinstance(var, Char):
Names are not guaranteed to be unique (it's even possible to rename character in the profile screen unless someone disabled the button)I think in the old gui you had to click on character name to rename her. It doesn't matter now, because in the new gui screen char_rename is not used anywhere.
I think in the old gui you had to click on character name to rename her. It doesn't matter now, because in the new gui screen char_rename is not used anywhere.
According to the code (action Show("char_rename", char=hero)) it should work for MC, but it doesn't.
Depending on her disposition and love for you it would be nice to be able to call her silly names and ask her to call you master or something alike ( but her profile tab would show her real name or something ) if you didn't ask for it.
Of course she may refuse and lose dispo/love..
(For general renaming)
If she was born with a name she woulnd want to change it unless there was a good reason..
May as well use dispo for that
this does not look like it'll benefit from being a dict either. If you make it a set:
(For general renaming)Slaves don't have a choice.
If she was born with a name she woulnd want to change it unless there was a good reason..
Poorly trained slave ( not 1 from slave market ) might resist like a normal girl would.. but slave sold from marked do not have a choice but to accept yes
Not sure if your gona implement a girl capture from quest or converting a normal girl ( random / unique ) to a slave girl.. and so on
im not even sure you want those animations yet..
what need to be tested is the coloring.. i can get everything needed as white with darker areas for shadows but i need to test if the diffuse (natural color spill) of other nearby colors still work in the same way on the item.. else it woulnd look as good after coloration.. unless you can colorize above a withe with shadows/color spill base..
Well i like her aswell but shes from a unique girl set you could say.. ( not sure if anyone made a pack with her yet ) but as known char i dont think i could use her as random girl
Or i make a unique pack with her lol..
I have no clue what problems you were trying to solve with 200 lines of "delegator" classes, the tasks as I see them:
1) Create a group (set) of characters in the listing screen.
2) Pass the group to other screens, like equipment/training and etc.
3) Fix the interface on those screens through isinstance(Char/set) checks whereever required.
4) Write a number of funcs or update existing once to get the group functionality working.
there are no issues with this that I can foresee but I obviously never actually tried adding this functionality.Code: [Select]elif isinstance(var, (dict, renpy.python.RevertableDict)):
elif isinstance(var, (Char, rChar))
Python will check parent classes as well so:Code: [Select]elif isinstance(var, dict):
elif isinstance(var, Char):
I don't think items transfer is working correctly, you are supposed to have the same characters in both viewports! The screen itself will make sure that you cannot pick two of the same character from both sides. It's a simple func if I recall correctly, you can take a look at how it's done in the buildings, just copy/paste the code and change the container (at least I hope that it's this simple*).
Yeah.. i found how to fix the facial expressionsBut her clothes are kinda shaking from time to time, super unnaturally :)
https://www.dropbox.com/s/kcrhfaf9gcwdzns/schooluni2v20091-0331.avi?dl=0 (https://www.dropbox.com/s/kcrhfaf9gcwdzns/schooluni2v20091-0331.avi?dl=0)
ill make 1600x1200 that you can resize to 800x600
Not sure how you colorize but i think its simpler if i remove parts that do not need it..
1600x1200..
(http://s20.postimg.org/cgicsyi49/body_b_1600x1200.png) (http://postimg.org/image/cgicsyi49/)(http://s20.postimg.org/m2bx999a1/mouth1600x1200.png) (http://postimg.org/image/m2bx999a1/)
800x600
(http://s20.postimg.org/u93x0tzcp/body_b.png) (http://postimg.org/image/u93x0tzcp/)(http://s20.postimg.org/6w5vibj95/mouth.png) (http://postimg.org/image/6w5vibj95/)
not sure if order matters for body or mouth
Indeed i do like the assembled result.. whats missing is a better normal map in general to give hair more details them when you colorize on to of that it would be even better..
Hmmm how exactly does your colorize work ??
you add the same amount of color to every pixels ?
you mix the same amount of color to every pixels ?
you add color with color ramp letting you chose whos pixels get more or less color ?
you use another method ?
can you keep transparency if i add it ( fully transparent should be alright but what about just a little less ? )
if i understand how it works i could prepare the parts or normals to make sure it looks good after colorize..
or could you make me a stand alone version of your tool so i could mix myself and get the desired result.. even for body color ?
Function:
im.Recolor (im, rmul=255, gmul=255, bmul=255, amul=255, force_alpha=False, **properties):
This adjusts the colors of the supplied image, im. It takes four arguments, rmul, gmul, bmul and amul, corresponding to the red, green, blue and alpha channels, with each being an integer between 0 and 255. Each channel has its value mapped so that 0 is 0, 255 is the argument supplied for that channel, and other values are linearly mapped in-between.
Function:
im.Twocolor (im, white, black, force_alpha=False, **properties):
This takes as arguments two colors, white and black. The image is mapped such that pixels in white have the white color, pixels in black have the black color, and shades of gray are linearly interpolated inbetween. The alpha channel is mapped linearly between 0 and the alpha found in the white color, the black color's alpha is ignored.
Hmm ok hard to know how it works the way i do as code like as i use Blender or UE4 material nodes or compositor with images or renders i can use a large panel of math function combined with color / vector / converters to extract mix combine differ what i need.. ( best would be for you to go check the nodes in blender to see what im talking about and since those node replace real programming function you should be able to replicate it code wise to get a optimal recoloring function)
For the body parts we are limited as its rendered images and not a 3d engine so i need to see what can be done and see whats the layer order needed for it to work.. for boobs size its all set but id like to combine it with pregnancy with any boobs size and the 3 body types (loli/young/mature)
If you think on something else that we need for the body parts let me know..
I'm having strange problems with BE, label city_beach_monsters_fight. When BE starts, all enemies are located at the very same place inside BE instead of being on three different levels.
...
Clarify how you made Slow and Fast Learner traits work. Should I use adjust_exp function every time I deal with experience, or they always work?
Items transfer still doesn't work like it did. You are supposed to have the same container with character listed from both sides.
Also, there seem to be instances when you get a huge list of traits removed (top-right part of the screen) when focusing an item on a group.
Well I take it you didn't like the char swap solution? okie, reverted.
Yep that's the dummy not comparing well with the group. now it shows trait differences for the first char, which is right in most cases. There's no perfect solution. No trait display for groups is another option.
looks nice, all the art coming by, btw. Is there a schedule/roadmap somewhere for planned changes?
I think you have much more work to release the beta than me. Arena, Graveyard, Autobuy/Autoequip are 100% yours. There is not much I can do there, it's pure, complex logic.
In the very last commit in my branch, a patch (https://github.com/picobyte/PyTFall/commit/a213f592c8d94e594c41dd04c1a37c7c3d30e000) to cleanup the auto-buy function. There were a few potential ctds. Is this ok or does the autobuy require a complete rewrite?
In case of an amount==1 auto-buy, the chance to select items from the lower sections of this function is slim. This due to the top-down traversal and a return on the first appropriate item.
+ pool = set(item for item in auto_buy_items if not(item.badtraits.intersection(self.traits)) and (item.price <= self.gold))
+
if self.status == "slave": # for slaves we exclude all weapons, spells and armor immediately
- pool = list(item for item in auto_buy_items if not(item.badtraits.intersection(self.traits)) and (item.price <= self.gold) and not(item.slot in ("weapon", "smallweapon")) and not(item.type in ("armor", "scroll")))
- else:
- pool = list(item for item in auto_buy_items if not(item.badtraits.intersection(self.traits)) and (item.price <= self.gold))
+ pool = pool.difference(item for item in pool if item.slot in ("weapon", "smallweapon") or item.type in ("armor", "scroll"))
selected_item = random.choice(tuple(newpool))
+ newpool = set(item for item in pool if item.type == "restore")
for i in pool:
# This will make sure that girl will never buy more than 5 of any item!
if i.id in self.inventory
if i in self.inventory:
newpool = list(item for item in pool if item.goodtraits.intersection(self.traits))
Figure out best logic for items buying/equipping.
Autobuy/equip methods. They do work reasonably well as it is, might require a go over just in case, both content and code.
Problem is that it may be too early to actually write code for that in auto_buy func, at least until those concepts are finalizedNo, it's not that bad. Unlike autoequipment, which may have differences from character to character but still should be useful for the current job, autobuying is not supposed to be perfectly logical and predictable.
No, it's not that bad. Unlike autoequipment, which may have differences from character to character but still should be useful for the current job, autobuying is not supposed to be perfectly logical and predictable.
During shopping people, especially females, often make weird decisions even irl. While character with low hp will try to buy something that restores health, under normal conditions there are no strict rules. Only various dices based on mood, traits and some items fields. It should be totally possible for chars to buy something totally useless - maybe even only to sell it a few turns later
I've encountered a problem. Sex scene can only exist inside GMs, and doesn't work with direct jump to it. But sometimes I need to activate it outside of GMs. I dunno how.
While it's possible to rewrite it to make sure it works everywhere, it means full rewriting. Perhaps it's possible to forcibly initiate GMs and then run the scene?
There are many labels depending on how it was started. The safest one is interactions_sex_scene_select_place, it doesn't need additional variables (if I'm not mistaken). You just need to make char=needed character.
The problem is, it heavily relies on gm.set_img(...) which does nothing at all outside GMs, so while logic works, pictures don't change.
def interactions_run_gm_anywhere(char, place, background):
"""
Runs (or doesn't) gm or interactions with the char based on her status; place is where we jump after gm is over
"""
if chars[char].status == "slave" or not(chars[char].is_available):
narrator("Nobody's here...")
renpy.jump(place)
elif chars[char] in hero.chars:
gm.start("girl_interactions", chars[char], chars[char].get_vnsprite(), place, background)
else:
gm.start("girl_meets", chars[char], chars[char].get_vnsprite(), place, background)
if gm.mode == "custom":
$ gm.exit()
else:
# Whatever happened before.
File "game/library/screens/locations/beach_left.rpy", line 190, in script
$ interactions_run_gm_anywhere(member, exit="city_beach_left", background="beach_rest", custom="interactions_sex_scene_begins")
File "game/library/screens/locations/beach_left.rpy", line 190, in <module>
$ interactions_run_gm_anywhere(member, exit="city_beach_left", background="beach_rest", custom="interactions_sex_scene_begins")
File "game/library/interactions/function - interactions (GM).rpy", line 294, in interactions_run_gm_anywhere
gm.start("custom", chars[char], chars[char].get_vnsprite(), exit, background)
KeyError: <store.rChar object at 0x0E48B350>
If it requires major rewriting of GMs, it can wait until beta, when you wanted to rewrite GMs anyway.
Also, as you write core, try to separate your thoughts with empty lines, it's really hard to read when it's just one endless wall of script/lines.So that's why those 16 random empty lines in GM - sex.rpy exist in the last push :D
I dunno, it looks good in notepad++, with different colors and stuff.
There are a few guides about np+ at the renpy lemma btw.
Would be even better if there wouldn't be commits aka "git went berserk again" in repo, which are probably caused by dropbox+atom :)
Pure git extensions always work for me, unless there is a super complex merging involved.
count = self.inventory[selected_item] + 1 if self.eqslots[selected_item.slot] == selected_item else 0
count = self.inventory[selected_item] + self.eqslots.values().count(selected_item)
$ i = 1And this works as expected:
while i < randint(3, 5):
$ i += 1
call city_tavern_thugs_fight
$ i = 1
while i < randint(3, 5):
call city_tavern_thugs_fight
$ i += 1
$ i = 1
while i < randint(3, 5):
$ i += 1
call city_tavern_thugs_fight
def test(end):
i=0
while i < random.randint(1,end):
i += 1
print(str(i))
$ i = 1
$ end = randint(3, 5)
while i < end:
$ i += 1
call city_tavern_thugs_fight
$ i = 1
while i != randint(3, 5):
$ i += 1
call city_tavern_thugs_fight
BTW I never seem to get scrolls for Casters. They are present in game/content/db/items_scrolls.json, but it seems they are not yet loaded? probably a known issue..I'm not sure yet how to handle them, or if we need them at all. There are a lot of them, they all look the same and do the same thing. Perhaps some kind of menu or a scripted item, like a book of spells, will be better.
You'll notice that it almost never reaches 50. The loop tends to stop earlier, since a new end is tested each iteration. It's better to define the end before the loopI see, thanks.
It's up to you, status is based on the number of posts :)
If I'm not mistaken, the second level requires 50, and the fifth level, Hero Member, requires 1000 posts.
I added a (free yet) dice minigame in tavern. While it works as intended, it could use cool renpy-based animations to show dices, which is beyond my capabilities.
Here (http://www.pinkpetal.org/index.php?topic=3504.msg31163#msg31163) Xela outlined his skills concept in general.
A question I have is how we should weigh stat mods versus skills mods.Skills have super high max values, almost unobtainable without cheats. Dunno how are you going to normalize them :D
To make them comparable I think I could normalise (scale) them by their respective max values, or should a stat increase e.g. always outweigh a skill benefit?
multipliers to action and training counters don't have big maxes but are very, very useful, especially in the long run.
for item in itemlist:
if item.slot != slot or not item.eqchance or item.type == "permanent" or item.ceffect or item in skip:
continue
if item.id in self.consblock or item.id in self.constemp or not can_equip(item, self):
continue
if slot == "consumable":
if item.type == "alcohol" and self.effects['Drunk']['activation_count'] >= 30:
continue
if item.type == "food" and elf.effects['Food Poisoning']['activation_count'] >= 6:
continue
next_itemlist.append(item)
weight = 0
applicable = True
for stat, value in item.mod.iteritems():
in_target_stats = True if stat in target_stats else False
if value < 0 and in_target_stats or stat in exclude_on_stats:
applicable = False
break
if in_target_stats:
# limit to remaining applicable for stat
weight += min(value, self.get_max(stat) - self.stats._get_stat(stat))
if not applicable:
continue
(stat_max_avg, stat_ct) = (0, 0)
for stat, value in item.max.iteritems():
in_target_stats = True if stat in target_stats else False
if value < 0 and in_target_stats or stat in exclude_on_stats:
applicable = False
break
if in_target_stats:
stat_max = self.get_max(stat)
stat_max_avg += stat_max
stat_ct += 1
stat_remaining = stat_max - self.stats._get_stat(stat)
# if the max doesn't shift, at least give a weight up to 1 for the increased max.
# if max decreases, give a penalty, more severe if there is little stat remaining.
weight = value / (stat_remaining + min(value, 1)) # stat_remaining is >= 0
# if stat increases due to shifted max, weight accordingly
weight += item.get_stat_eq_bonus(self, stat)
if not applicable:
continue
# for normalisation
stat_max_avg = stat_max_avg / stat_ct if stat_ct else 1
for skill, effect in item.mod_skills.iteritems():
in_target_skills = True if skill in target_skills else False
if value < 0 and in_target_skills or skill in exclude_on_skills:
applicable = False
break
if in_target_skills or value < 0 and skill in exclude_on_skills:
skill_max = SKILLS_MAX[key]
skill_remaining = skill_max - self.get_skill(skill)
if skill_remaining <= 0:
# calculate skill with mods applied, as in apply_item_effects() and get_skill()
mod_action = self.stats.skills[0] + effect[3]
mod_training = self.stats.skills[1] + effect[4])
mod_skill_multiplier = self.stats.skills_multipliers[2] + effect[2]
training_range = mod_training * 3
beyond_training = mod_action - training_range
if beyond_training >= 0:
mod_training += training_range + beyond_training / 3.0
else:
mod_training += mod_action
new_skill = mod_training*max(min(mod_skill_multiplier, 1.5), 0.5)
stat_scale = stat_max_avg / skill_max
if in_target_skills:
# limit to remaining applicable for skill
weight += min(new_skill, skill_remaining) * stat_scale
else:
weight += value * stat_scale
if not applicable:
continue
Strictly speaking, auto equipment does not have to be completely perfect all the time. It should be adequate, but a perfect one will make the option to directly access character inventory (slaves and lovers) mostly useless.
Can you add two or three setups for inventory that could be stored? It was requested by a bunch of people during the alpha release phase. Basically you just have to store equipped dicts and add checks to make sure that if an item was sold or given away (no longer in inventory). Also it should unequip current equipped items before equipping the saved preset.
The reason it was asked is that they wanted a combat/interactions/work oriented setups and wished to conveniently toggle between them, which sounds like a perfectly reasonable request.It's a bit tricky though due to design-based limitations. For example, slaves cannot have a combat setup because they cannot equip most weapons and armors. And unless the character is a slave or a lover, you don't have direct access to inventory, so the same should be true for her setups.
It's a bit tricky though due to design-based limitations. For example, slaves cannot have a combat setup because they cannot equip most weapons and armors. And unless the character is a slave or a lover, you don't have direct access to inventory, so the same should be true for her setups.
so unless the character has a status change, this cannot be an issue.Enslaving will wait until dungeon, but freeing someone (after paying a certain sum) will be in the next release.
What is not yet implemented is the checks for discarding and selling items. Where should these checks occur?Ideally, we should try to prevent cases when at 200 turn everyone has 50+ items in inventory. Especially multiple copies of the same item. It's fine to keep 5-10 potions, but not 50.
if character has 10 items with "dress" type and "body" slot, it might be wise to use auto equipment algorithm and then sell 1-2 dresses with the smallest "weight".
There is a small catch though: Xela implemented a system when you can give an item to a free character, and she may agree to take it and then even equip/use it (or disagree, of course). But at the same time you can take this item anytime, because it was yours in the first place.
So such items should not be sold, or considered to be duplicates in the first place.
I pushed the changes in the main branch, so you can see the results for yourself.Your system allows creation of infinite copies of equipable items. Once you saved presets, you can take items from the character and they still will work, creating items in her inventory out of nowhere.
Ideally, we should try to prevent cases when at 200 turn everyone has 50+ items in inventory. Especially multiple copies of the same item. It's fine to keep 5-10 potions, but not 50.
For example, if character has 10 items with "dress" type and "body" slot, it might be wise to use auto equipment algorithm and then sell 1-2 dresses with the smallest "weight".
Other than kiss games who have lots of event bg.. do you know other games where i could inspire me to make my 3D version of those ?
if purpose == "Battle Mage":
returns.extend(self.auto_equip(['health', 'mp', 'attack', 'magic'], exclude_on_stats=["agility", "luck", 'defence', 'intelligence'], slots=slots, real_weapons=True))
elif purpose == "Barbarian":
returns.extend(self.auto_equip(['health', 'attack', 'defence', 'constitution'], exclude_on_stats=["luck", 'agility'], slots=slots, real_weapons=True))
elif purpose == "Wizard":
returns.extend(self.auto_equip(['mp', 'magic', "luck", 'intelligence'], exclude_on_stats=["health", 'defence'], slots=slots, real_weapons=True))
The girls list? If you mean cemetery, it will show dead characters - ie those with "After Life" location. There are many ways to make them useful, with and without resurrection.
for i in xrange(10):
new_random_girl = build_rc(pattern="Warrior")
hero.add_char(new_random_girl)
new_random_girl.status = "free"
kill_char(new_random_girl)
it will have chars to show.I used to work as a delphi coder, so all my knowledge about python is based on pytfall development, where I never was the main coder.Well you do a little every day, work on something and after a while, during the process you create something, also you learn during the time. Rome was not built in a day. Some things can be difficult, but usually you can find somewhere how things can be done. Personally I am not too afraid of doing some calculations. Where is sympy in use then?
Even though I know a thing or two about python and renpy now, it's not nearly enough to understand complex systems like sympy or battle engine.
A free character (without lover status) always has auto equipment enabled, and decides by herself which items to use/equip. You can give her items, but she may or may not take them, and may or may not equip/use them.You mean that auto equip should not be available for free characters, right?
If you mean the three equipment sets you added recently, then yes, they are useless for free characters too.
Well you do a little every day, work on something and after a while, during the process you create something, also you learn during the time.When you do something by yourself, yeah.
Where is sympy in use then?It's used to simulate jobs workflow at very least, and possibly for exploration module too - since it's not ready yet, I cannot tell for sure.
You mean that auto equip should not be available for free characters, right?Ohhkey, define auto equip then :D
When you do something by yourself, yeah. But when I look at Xela's most advanced code, I feel like I try to read Japanese text -_-
If I'll have to choose between maintaining his BE on my own and writing a simpler one (like that one in Old Huntsman's games), it will be the second option.
It's used to simulate jobs workflow at very least, and possibly for exploration module too - since it's not ready yet, I cannot tell for sure.
Ohhkey, define auto equip then :D
Because we usually mean auto equipment algorithm.
Free characters decide on their own what to equip, and player cannot tell them what to equip. In order to do so they have to use autoequip algorithm of some kind, there is no way around :)
It's a bit like mugen, the queen of fighters, mortal combat or tekken. Sorry to say, but not exactly my game preference. I rather like rpg or adventure. Nonetheless I do like the magic/battle effects, but I find the characters during fight currently too static. It would be nice if characters were moving a bit when in rest, like in mugen. Maybe mugen packs could be a resource for this?It's a classic turn-based jrpg battle engine. It's not very interesting yet because I'm unable to freely add new unique types of effects - or change existing ones a lot - without Xela due to lack of code understanding. Even Xela admitted that it wasn't easy for him to build the battle engine.
Well I meant the auto equip button in the inventory screen. It uses the auto-equip algorithm. My question is: should it work for free characters? because it seems like a way to circumvent the normal 'hey I decide my own clothing style' response of the free characters.No, it shouldn't work for free chars - unless check_lovers(hero, character) is True.
Xela, there is a small but pesky limitation at the MC setup screen. If the second class is tied to the third choice, ie MC mother, you cannot see it until you pick one of options from the last choice.
There is an issue with BE buffs. Turns out if you have multiple spells made via DefenceBuffSpell, they all can be applied at the same time, and each will show its own buff icon above the target. It's super confusing, so either buffs should have slightly different unique icons, or we'll have a system which prevents multiple buffs of the very same kind.
Nope, doesn't work. It shows default one, and if I remove the ProportionalScale("content/gfx/be/fists.png", 30, 30), it throws an error.
Wait a sec... Even the very same DefenceBuffSpell can be applied infinitely. It's insane, at least the very same spell should not stack.
for i in chars.values():
i.gold = 100000000
i.auto_buy(amount=200)
Happy New Year!
Looks good. We can hook up BE to this for encounters. Is the code yours or something from the cookbook?
Good to hear you like it too and thanks for the dungeon generator. The code is from the cookbook (https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=19245), it has public domain license. Kudos for the original author. It is the 2.0 version adapted to allow walls beyond 2 deep.
I'd also like to add a small party, as used in many such games, e.g eye if the beholder.
I don't think that it ever worked like that.No it does... The problem was in testing rpy, it already gave all those chars to MC, so GMs had no choice but to show random chars :D
$ img = "content/events/tavern_dice/"+str(i)+".png"The orange line animates the moment when you select a dice, but only once for every dice. If you try to unselect and select it again, it won't be animated anymore, it just will change the color.
if number != selected_dice:
imagebutton:
at dice_roll_zooming()
idle img
hover (im.MatrixColor(img, im.matrix.brightness(0.15)))
action Return(number)
else:
imagebutton:
at dice_roll_selecting()
idle im.Recolor(img, 0, 255, 0, 255)
hover (im.MatrixColor(im.Recolor(img, 0, 255, 0, 255), im.matrix.brightness(0.15)))
action Return(number)
An event? I only found this (https://www.renpy.org/wiki/renpy/DSE#Events)about events, and I don't see how is it connected to alts.
text (u"{color=#F5F5DC}%s/%s"%(hero.health, hero.get_max("health"))) xalign 1.0 style_suffix "value_text" xoffset -6 yoffset 4
Xela, resolve the problem with DefenceBuffSpell. We can justify many things, but not the case when you can cast the very same spell twice or thrice getting double or triple defence buff.
Ideally: all buffs/debuffs spells, including future ones, have special keywords as arguments.
If, for example, the target already has active buff/debuff with X keyword, then ANY spells with the X keyword cannot be casted on the target (or can be casted, but won't work anyway) until this active buff/debuff with the X keyword ends. It will allow full control for all buffs.
DefenceBuffSpell("Solid Field", attributes=["status", "earth"], defence_multiplier={"melee": 1.5}, "buff_group" = "kind_of_a_buff", ...
If the target has active buff/debuff with "buff_group" == "kind_of_a_buff", then no spells with the same kind_of_a_buff can be casted on it. Until the buff/debuff ends, of course.It will allow us to control how buffs stack, and also will automatically prevent cases when the very same spell stacks with itself.
Nothing wrong with it. Not our problem if player or ai decided to apply a weak spell when had a chance to apply a strong one.
I'll just change everything to attacker_effects, and you can remove old casting_effects code.
I'll just change everything to attacker_effects, and you can remove old casting_effects code.
sfx=None, gfx=None, zoom=None, aim=None, xo=0, yo=0, pause=None, anchor=None, target_damage_gfx=None, # <=== These should die off in time!
I found and pushed a damage effect for water. The idea is do nothing with sprite but show the bubbles webm over it. Pretty much like we do with on_fire damage effect, however there is no need to recolor or hide sprite itself because webm is transparent.The webm is located in content\gfx\autowebm\be_water_mask. Now, I have no idea if it's possible to do with webms in renpy, or easy enough to make sense. In which case it should be deleted.
Sadly, we don't have such effects yet, so I don't have an example to make it work.
I've added new effect to signify whos attacking turn it is to clear your request from 10 days ago, looks nice :)Looks awesome! :)
The webm is located in content\gfx\autowebm\be_water_mask. Now, I have no idea if it's possible to do with webms in renpy, or easy enough to make sense. In which case it should be deleted.
Ah, I see what happened... when trying to setup default values for different attack types, some older definitions got disabled.I updated all skills and spells, they all use the new format now.
It doesn't make sense to get rid of one old field but keep the others around, we'll get rid of them once we're sure that all older fields are gone.
SimpleSkill("Whip Strike", attributes=["melee", "physical"], critpower=.4, desc="Lashing with a whip.", effect=4, range=1, vitality_cost=1, menu_pos=0,
main_effect={"gfx": ProportionalScale("content/gfx/be/whip.png", 150, 150), "sfx": list("content/sfx/sound/be/whip_attack_%d.mp3"%i for i in xrange(1, 2))},
target_sprite_damage_effect={"gfx": "shake", "initial_pause": .05, "duration": .5})
but I don't see it working. It always plays the very first sound in the list.
but I don't see it working. It always plays the very first sound in the list.
BE_Action("Throw", attributes=["ranged", "physical"], desc="Throwing a projectile.", effect=5, range=3, vitality_cost=1, menu_pos=0,
main_effect={"gfx": ProportionalScale("content/gfx/be/throw.png", 150, 150), "sfx": list("content/sfx/sound/be/throwing_attack_%d.mp3"%i for i in xrange(1, 2))},
target_sprite_damage_effect={"gfx": "shake", "initial_pause": .05, "duration": .5})
There are two very different mp3, throwing_attack_1 and throwing_attack_2, but it always uses the first one. Maybe I should set sfx somehow differently, I don't know.
Maybe I should set sfx somehow differently, I don't know.
Take a look at Ground Shockwave weapon skill. When enemies use it, it's totally wrong. Probably because of high xo, but I can't remove it, animation is too specific.
P2P_Skill(u"Midnight Arrow", menu_pos=3, range=3, attributes=["ranged", "physical", "darkness"], effect=65, multiplier=1.8, vitality_cost=15, health_cost=10, desc="Releases explosive arrow made of dark energy.",
projectile_effects={"gfx": "demon_bow_arrow_webm", "sfx": "content/sfx/sound/be/elf_bow.ogg", "duration": 0.56, "aim": {"point": "center", "anchor": (.5, .5)}},
main_effect={"gfx": "demon_bow_hit_webm", "sfx":"content/sfx/sound/be/demon_core.ogg", "duration": 0.36, "aim": {"anchor": (0.5, 0.5), "xo": 0 ,"yo": 0}, "hflip": True},
target_sprite_damage_effect={"gfx": "shake", "initial_pause": 0.01, "duration": 0.2},
target_death_effect={"gfx": "dissolve", "initial_pause": .2, "duration": .15},
dodge_effect={"initial_pause": 0.005})
Midnight Arrow has specific main_effect animation which should be flipped when used by enemy. But it ignores "hflip": True.
Midnight Arrow has specific main_effect animation which should be flipped when used by enemy. But it ignores "hflip": True.
Well, it's always right for player party and always wrong for enemies.
Some attacker_effects need hflip too, they ignore it atm.
Ohh while browsing on brothel game to find clothing idea and BGs i foud this..Well, I hoped there will be interesting concepts, but the whole gui is Japanese, so nope.
http://www.dlsite.com/maniax/work/=/product_id/RJ176115 (http://www.dlsite.com/maniax/work/=/product_id/RJ176115)
and its a simple but rather well made monster girl brothel
The right part is higher. So for enemies it's still higher without hflip.
game\content\gfx\be\auto-animations\cast_dark_1 0.07\data01_08231.png
It's the best way to see asymmetry.
transform blowing_wind():
parallel:
easeout_bounce 0.1 xzoom -1.0
easeout_bounce 0.1 xzoom 1.0
repeat
But it "rotates", ie zooms around the sprite's left side. How to do it around the sprite center?
transform blowing_wind():
xanchor .5
easeout_bounce .1 xzoom -1.0
easeout_bounce .1 xzoom 1.0
repeat
transform blowing_wind():
parallel:
easeout_bounce 0.1 xzoom -1.0 xanchor 0.1 xoffset 20
easeout_bounce 0.1 xzoom 1.0 xanchor 0.0 xoffset 0
which is not perfect, but not ugly either.
transform light_ray(sprite, time):
im.MatrixColor(sprite,im.matrix.brightness(0.5)) with Dissolve(time*0.5, alpha = True)
pause 0.1
im.MatrixColor(sprite,im.matrix.brightness(0)) with Dissolve(time*0.5, alpha = True)
elif type.startswith("on_light"):
what = target.besprite
t = self.target_sprite_damage_effect.get("duration", 1)
at_list = [light_ray(target.besprite, t)]
It works, but for some reason ignores time variable, dissolves are always too fast.
Code: [Select]transform light_ray(sprite, time):
im.MatrixColor(sprite,im.matrix.brightness(0.5)) with Dissolve(time*0.5, alpha = True)
pause 0.1
im.MatrixColor(sprite,im.matrix.brightness(0)) with Dissolve(time*0.5, alpha = True)
Two types of walls, both with a background, a door and three barrel formations, all in two different light settings (L on the keyboard) all in all now 354 files, 52Mb. This is somewhat comparable to the content for a single character. Is this going to be a problem? Could compress images to reduce their size.
s.append("%s brings %s back!" % (char.nickname, t.name))
s = s + self.effects_to_string(t, default_color="green")
In the log it should be green too judging by this line, but it's white.
Two types of walls, both with a background, a door and three barrel formations, all in two different light settings (L on the keyboard) all in all now 354 files, 52Mb. This is somewhat comparable to the content for a single character. Is this going to be a problem? Could compress images to reduce their size.That's a not very popular character, popular ones have 200-300 MB :)
Thanks for the responses. I agree the raytracing would be ideal, but we really would need more than a few programmers in spare time to write that. It's going to be a lot of difficult code. There is a simple pygame (https://github.com/Mekire/pygame-raycasting-experiment/blob/master/raycast.py) and a doom clone (https://github.com/pinnthedeveloper/pygame-FPS/blob/master/world.py) both written in python to prove that it can be done. Not sure whether c libraries would have to be compiled in ren'py though. I expect it to be more doable in c++/opengl. Personally I favor playing the 90 degrees angles in rpg games and not not the 360 degrees, which are more apt for first person shooters. But the rotations would be nice anyway to animate rotation and walking.
Does the calendar at the main screen work somehow, or it's just for show? I mean that piece of art right above day of week.
It looks like a decent place to show such things.
Is there a way to access special traits fields like evasion_bonus? It's not a big deal, but "evasion +" for positive evasion_bonus would look neat at the trait info screen.
if trait_info.min:
label (u"Min:") text_size 20 text_color goldenrod text_bold True xalign .45
for i in trait_info.min:
frame:
xsize 150
button:
background Null()
xsize 150
action NullAction()
if trait_info.min < 0:
text (str(i).title() + ": " + str(trait_info.min)) size 15 color red align .5, .5 text_align .5
else:
text (str(i).title() + ": +" + str(trait_info.min)) size 15 color green align .5, .5 text_align .5
It works for everyone. if trait_info.evasion_bonus:
label (u"Evasion:") text_size 20 text_color goldenrod text_bold True xalign .45
frame:
xsize 150
button:
background Null()
xsize 150
action NullAction()
if trait_info.evasion_bonus[1] < 0:
text ("minus") size 15 color red align .5, .5 text_align .5
elif trait_info.evasion_bonus[1] > 0:
text ("plus") size 15 color green align .5, .5 text_align .5
and then select a trait which doesn't have evasion_bonus, I'll getFile "game/library/screens/character_profile.rpy", line 801, in executeMeanwhile trait class has evasion_bonus among other BE-only attributes, but they all are commented out. And if I uncomment evasion_bonus attribute, the game begins to CTD during evasion calculations.
if trait_info.evasion_bonus:
AttributeError: 'Trait' object has no attribute 'evasion_bonus'
if trait_info.evasion_bonus:
toif hasattr(trait_info, "evasion_bonus"):
label dev_testing_menu:This is the code we run before launching debug mode. I added the orange line to make MC mage, in order to test how well he'll resist spells compared to warriors-characters. But his stats are the same with and without this line.
if config.developer:
menu:
"Debug Mode":
$ hero.apply_trait("Mage")
$ initial_levelup(hero, 100, max_out_stats=True)
hero.traits.basetraits.add(traits["Mage"])
{
"name": "Electrificator",
"desc": "An ancient defensive mechanism.",
"front_row": 0,
"battle_sprite": "content/npc/mobs/dv.png",
"portrait": "content/npc/mobs/dv1.png",
"race": "Droid",
"locations": [],
"min_lvl": 45,
"basetraits": [
"Mage"
],
"stats": {
"attack": 100,
"defence":100,
"magic": 100,
"agility": 100,
"luck":-50,
"charisma":100,
"constitution": 100,
"intelligence": 100
},
"skills": {},
"traits": ["Android", "Electricity"],
"attack_skills": [
],
"magic_skills": ["Ion Storm", "Electromagnetism", "Thunderstorm", "Arcane Field"
]
},
Then I launched BE and used the Cataclysm spell. {
"id": "Mage",
"occupations": [
"Warrior", "Caster"
],
"desc": "A little spark of magic within one's soul gives the ability to manipulate arcane energies.",
"basetrait": true,
"mod_stats": {"magic": [1, 1], "intelligence": [1, 1]
},
"init_lvlmax": {
"magic": 50,
"intelligence": 50,
"mp": 75
},
"init_max": {
"magic": 25,
"mp": 50
},
"init_mod": {
"magic": 15
},
"init_skills": {},
"leveling_stats": {
"attack": [
-1,
-1
],
"magic": [
3,
3
],
"mp": [
3,
3
]
}
}
If I create MC as mage of lvl 1, he'll have 30 maximum mp. Even though mage class has init_max mp+50 and init_lvlmax mp+75, there is no way to have 30 mp even at level 1. if trait in self.basetraits:
multiplier = 2 if len(self.basetraits) == 1 else 1
for stat in trait.init_lvlmax: # Mod value setting
if stat in stats:
stats.lvl_max[stat] += trait.init_lvlmax[stat] * multiplier
else:
msg = "'%s' trait tried to apply unknown init lvl max stat: %s!"
devlog.warning(str(msg % (trait.id, stat)))
This is the part which implements init_lvlmax. It's a part of apply function. So the only way to make init_lvlmax work is to apply trait AND add it to basetraits. Ie hero.traits.basetraits.add(traits[t])
hero.apply_trait(traits[t])
Without any of these lines base traits don't give all stats they have to give.Conclusion: base traits are afk, just like mobs stats. Balancing BE is impossible until it will be fixed properly.
That aside, explain how pure MC mage of 50 level with no equipment deals three times more damage than pure mob mage of 50 level, both with maxed stats. With no meaning elemental traits involved.
It's in the testing BE at the moment, I tested it on cataclysm spell.
"stats": {
"attack": 100,
"defence":100,
"magic": 100,
"agility": 100,
"luck":-50,
"charisma":100,
"constitution": 100,
"intelligence": 100
},
in the json. It should mean maxed out stats anywhere.
# Decreasing based of current health:
healthlevel=(a.health/a.get_max("health"))*0.5 # low health decreases attack power, down to 50% at close to 0 health.
attack *= (1-healthlevel)
But their levels stay the same. How is it possible?
Lilica has a string location: city
since when it's an error?
I updated mobs recently, there shouldn't be any faults - there are none in the dev log atm. All errors go from hardcoded arena and old characters jsons.
since when it's an error?
Logger.info(msg, *args, **kwargs)
Logs a message with level INFO on this logger. The arguments are interpreted as for debug().
Logger.warning(msg, *args, **kwargs)
Logs a message with level WARNING on this logger. The arguments are interpreted as for debug().
Logger.error(msg, *args, **kwargs)
Logs a message with level ERROR on this logger. The arguments are interpreted as for debug().
Logger.critical(msg, *args, **kwargs)
Logs a message with level CRITICAL on this logger. The arguments are interpreted as for debug().
There is a lot to balance, starting from class and elemental traits, they are too powerful.
We're using menu_pos to try and guess power of a skill and they are not all on the same level.It's not a very accurate way, especially for weapon skills. Weapon with higher amount of skills will have higher max menu_pos, no matter how strong these skills are.
It's not a very accurate way, especially for weapon skills. Weapon with higher amount of skills will have higher max menu_pos, no matter how strong these skills are.
Xela, base traits now have defence_multipliers, we cannot rely on stats alone to make classes meaningful in BE. They should be doubled for a single base trait too.
if hasattr(i, "defence_multiplier"):
if i in target.traits.basetraits and len(target.traits.basetraits)==1:
m = m + 2*i.defence_multiplier.get(self.delivery, 0)
else:
m = m + i.defence_multiplier.get(self.delivery, 0)
And I think I fixed menu sorting in BE, which is a bit more complex due to lack of comments in that section. I mean, they are sorted now, but I wonder how ctd-proof is it.transform sprite_default(xx,yy,zz):
ypos renpy.config.screen_height*yy
xpos renpy.config.screen_width*xx
zoom zz
pause 60
repeat
#...
renpy.show(icon, at_list=[sprite_default((3 + lateral)/7, 1 - distance/12, 1/(distance+1))])
In an attempt to display an item.icon in my 3d view, I was trying a transform that positions and zooms the icon, according to the distance and lateral position where it should lie, that is this image after the tranformation, without animation. Without a transform, or with empty [] at_list list the image is shown, with an Transform function in this list, however, it is not. Any idea why this could be occurring?
Edit: probably something caused it to be drawn off screen - I saw the image now with the transform..Code: [Select]transform sprite_default(xx,yy,zz):
ypos renpy.config.screen_height*yy
xpos renpy.config.screen_width*xx
zoom zz
pause 60
repeat
#...
renpy.show(icon, at_list=[sprite_default((3 + lateral)/7, 1 - distance/12, 1/(distance+1))])
You did not push this code bit. You are prolly correct, zoom is prolly causing sprite to be drawn off screen. You can try adding anchor (.5, .5) or use center/around to try and fix it. Also, you usually want to place a tag instead of an icon as the first argument of your show function, it's easier to hide it later.
I nerfed some negative max values which I overlooked due to their rareness, and raised initial maxes a bit just in case. If you'll still have the error, I will need archive with all your random chars jsons to track down the problem further, since they are most likely even more outdated than mine.
if "Nami" in chars:
before all quest code is sufficient to make sure it won't cause ctd without her.
DOA quest is a sketch. It requires working slave training to work as intended - that means post beta.
As for Naruto quest, it
1) heavily relies on matrix, which is not a bad thing, but it complicates the ability to make the quest removable, since matrix calls and menu should be optional even though they are integrated into location;
2) it does so because we don't have SE, using it was my intention from the beginning.
Speaking of quests, with minor tweaks we can use the old Nami quest. I do hope that puttingCode: [Select]if "Nami" in chars:
before all quest code is sufficient to make sure it won't cause ctd without her.
simple_conditions=["'Nami' in chars"],
Yes, since I didn't get any errors, I hoped it will be so simple in renpy to make a pluggable rpy.
Sadly, in this case register_quest("Treasure Seeker") line still will be executed no matter what.
I am sure that we can setup Naruto quests, matrix and SE exactly like we want it.Initially I made matrix based on houses on the background. So if you want to find a character, you should enter matrix mode and find her house there.
Yes, I moved it to her folder.
Initially I made matrix based on houses on the background. So if you want to find a character, you should enter matrix mode and find her house there.
It looks neat. But it leads to a shit-ton of checks for every character even before we begin to check whether character exists in the game or not. Not to mention that none of them can be the main quest giver, since anyone may not exist in the game.
So I used another system which you added even before the matrix. With specific settings GMs in location contain only characters whose location field == location name. The idea is to add characters to village as you locate them inside SE. Of course we need SE for a start, but after that we just can easily change their location any time, adding them to GMs.
I have troubles with screen show_trait_info - it shows info once you click on any character trait/hero trait/main trait icon in character profile. The closing button, cross, creates a noticeable gap on the top of the window. I dunno how to deal with it.
I have troubles with screen show_trait_info - it shows info once you click on any character trait/hero trait/main trait icon in character profile. The closing button, cross, creates a noticeable gap on the top of the window. I dunno how to deal with it.
File "game/library/screens/character_profile.rpy", line 14, in script
if isinstance(result, (list, tuple)):
File "game/library/screens/character_profile.rpy", line 14, in <module>
if isinstance(result, (list, tuple)):
NameError: name 'result' is not defined
You wrote this code, not me, so I'm not sure what's wrong.
When you bother a hired free character and she refuses to talk to you eventually, you gotCode: [Select]File "game/library/screens/character_profile.rpy", line 14, in script
You wrote this code, not me, so I'm not sure what's wrong.
if isinstance(result, (list, tuple)):
File "game/library/screens/character_profile.rpy", line 14, in <module>
if isinstance(result, (list, tuple)):
NameError: name 'result' is not defined
On sidenote, timings for some skills are off, it's ok for the most part but we'll have to take another look at skills after the beta.I looked though BE skills today for the last time before beta.
I figured it out. I also use result variable in some interactions to calculate outcome, and after using delete it. So under certain conditions the game is left without result variable at all.
Yeap, we definitely will have to thoughtfully update interactions and their code right after releasing beta.
There is a turn-based BE in Babe Runner? The same as ours?
I've seen turn-based BEs with a little bit of real time control, for example evasion helps to evade, but only as long as player has good enough reaction to press evade button in time.
Maybe it's a coincidence, but I also updated renpy to 6.99.12.2.2029 the day before yesterday. Changelog suggests namespaces were updated, so they might be updated with errors.Turns out even 6.99 has this issue. Weird.
So is SE, BE, Wage/Status Tiers, Building/Businesses/rChars Generation, Taxes and SimPy stuff. I do have almost unreasonable expectations towards myself when working uninterrupted so the plan is to take out all of that in a week or two in January, even while working on other project(s) + as codebase grows, you can add events, texts and image calls + balance stuff out.and some events I'll need to finish, with many of them being based on SE.
use local char or Discord (if you have it) to discuss what to do about content for them.
I do believe in advertising via making posts which are visible to everyone all the time. It's not unusual to see 5-20 guests reading this thread almost around the clock.
We can discuss stuff via chats of course, in which case the local chat is the easiest solution, since I don't have discord or skype. But if you think discord is somehow better for our needs, I can create an account there.
- Do we get rid of Jobs now or after beta?The last time I checked jobs code in classes-jobs.rpy I couldn't find any traces of simpy there. As if jobs have nothing to do with it.
- What do we do with Managers?
What do we need from SE in terms of special mechanics (both for interface and logic) that will deal with quests/events?Outputting arbitrary string, ie "team found X" in the SE log, maybe using unusual font color. And the ability to advance quests and set/delete flags after that to make it meaningful.
I would prefer to use chats during daytime or at Friday's and Saturday's eventide. Because every time we discussed something at eventide via chat in the past it led to 4-5 hours of sleep before work instead of my usual 7, and that sucks big time in the morning ::)
The last time I checked jobs code in classes-jobs.rpy I couldn't find any traces of simpy there. As if jobs have nothing to do with it.
Since managers are supposed to affect simpy algorithm, I have a hard time imagining how it will be possible with jobs not controlled properly by simpy.
Outputting arbitrary string, ie "team found X" in the SE log, maybe using unusual font color. And the ability to advance quests and set/delete flags after that to make it meaningful.
As for SE events conditions, they are the same as for quests, except instead of city areas where quest event may trigger they deal with SE areas.
A separate topic is team checks. Ideally, we could use a system which treats exploration team as a single complex unit. So there won't be need to check every single character in the team every time, you can just write for example "if current_team.agility > 10 and current_team.level <= 10" and it checks if at least one of the characters suits it.
We pass data to jobs cause all the previous work is in there but it is a complication that will only get worse as we add new stuff to businesses.Jobs are kinda the core of gameplay. Even SE is a job too, to make combat characters more useful than just being guards.
It may be too complicated and unnecessary to do SE events the same way as world events. SE is it's own "world", we need to work within it's structure somehow.No, I mean only the structure of conditions.
Renpy does have default dissolve, and we use it. I found info about Dissolve(time, alpha, time_warp) in renpy wikia, but it tells me nothing, "with dissolve(time=0.2)" doesn't work,
with Dissolve(.2)
qdissolve = Dissolve(.2)
with qdissolve
As I feared, under unusual circumstances it's impossible to use top_stripe to access MC profile and inventory :(
It's all hardcoded to work only where it works now. You can jump there from anywhere, but the game won't return you to the place where you jumped from, effectively breaking any events including matrix dungeon.
I will have to make simplified version of profile and inventory which will work everywhere, allowing to watch over team status and heal it...
It might be a bug in renpy, since once I made empty bar fully transparent, this effect disappeared.
label label_name(i="default_value")
However, I don't understand how to pass the i value while jumping to such label from a screen section using action.Renpy allows syntax likeCode: [Select]label label_name(i="default_value")
However, I don't understand how to pass the i value while jumping to such label from a screen section using action.
Any conclusion about bars issue?
bar:
right_bar Frame"content/gfx/interface/bars/empty_bar2.png")
left_bar Frame"content/gfx/interface/bars/vitality2.png")
value l.vitality range l.get_max("vitality")
thumb None
left_gutter 10 right_gutter 10 # I am not sure about these values...
xysize (102, 14)
You're also forcing the size of render and sides (xysize/im.Scale), which may be another issue (not sure about this one).Btw I'm using your code from BE bars.
I wonder how well a looped animation will work as a mob sprite.
I bet webm will cause ctd due to damage effects which recolor or replace sprites. But manually animated sprite sheet might have a chance.
planned to finish all main systems (!)
- Arena is questionable in both logic and gui. Gui aside, it still uses mostly alpha logic which is highly incompatible with most beta mechanics.
Besides, I'm almost completely sure that creating dozens rchars only to be used as fighters at arena is like to shoot sparrows with a cannon.
- Finance and Friends tabs at the hero screen are afk. Both are small, independent systems.
- SE and simpy-based jobs are not operational, making any characters activity problematic.
Both worked perfectly fine last I checked them. If something was edited in the meanwhile, it was not done so by me. You do actually need data for them, like at least some fin stuff to build reports and at least one friend/lover.Indeed. I was under impression they are not working because they don't show a thing at turn 1, while in theory they should show zero.
They are fully and completely operational.I don't see a single mention of simpy in classes-jobs. And it's the main file for jobs skills checks.
image test_test:
"content/gfx/animations/mob_test 0.13 1/25734.png"
"content/gfx/animations/mob_test 0.13 1/25735.png"
"content/gfx/animations/mob_test 0.13 1/25736.png"
"content/gfx/animations/mob_test 0.13 1/25737.png"
"content/gfx/animations/mob_test 0.13 1/25738.png"
"content/gfx/animations/mob_test 0.13 1/25739.png"
"content/gfx/animations/mob_test 0.13 1/25740.png"
repeat
Then one problem remains, gui used for finance screens, both MC and buildings, are undoubtedly the worst gui in the whole game atm.
I don't see a single mention of simpy in classes-jobs. And it's the main file for jobs skills checks.
As I feared, it's plainly impossible to use webms as mobs sprites, the game does not expect such format. And I'm not really sure how to make mob.battle_sprite = manually animated image, such asCode: [Select]image test_test:
"content/gfx/animations/mob_test 0.13 1/25734.png"
"content/gfx/animations/mob_test 0.13 1/25735.png"
"content/gfx/animations/mob_test 0.13 1/25736.png"
"content/gfx/animations/mob_test 0.13 1/25737.png"
"content/gfx/animations/mob_test 0.13 1/25738.png"
"content/gfx/animations/mob_test 0.13 1/25739.png"
"content/gfx/animations/mob_test 0.13 1/25740.png"
repeat
sprite = char.show("battle_sprite", resize=char.get_sprite_size("battle_sprite"))
char.besprite_size = sprite.true_size()
We also have masks damage effects, when mob sprite is used as a mask for static or animated picture.
Is it possible to use a webm as a mask for something else? Because a monophonic texture of desired color and low alpha which uses webm as a mask can replace plain recolors. Although I doubt it can be achieved easily.
In the worst case unsupported damage effects will be disabled, since only special mobs will have animated sprites.
Anyway, I need any kind of support for animated mobs sprites, be it webms or sprite sheets.
static sprite to show a mob
They won't be humanoids. Any humanoid would require advanced animation system to look naturally anyway.
But there is nothing wrong with a boiling plasma ball if it keeps boiling while being shaken.
We also have masks damage effects, when mob sprite is used as a mask for static or animated picture.
Is it possible to use a webm as a mask for something else? Because a monophonic texture of desired color and low alpha which uses webm as a mask can replace plain recolors. Although I doubt it can be achieved easily.
image movie = Movie(channel="main_gfx_attacks", loops=3, play="movie.webm", mask="mask.webm", to_image=Image("gallery2.jpg"))
init python:
def ColorBlend(d, color="#000", alpha=.5):
return AlphaBlend(Transform(d, alpha=alpha), d, damage_color, alpha=True)
init -1:
transform damage_color:
Solid("#732626", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#7A1F1F", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#821717", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#8A0F0F", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#821717", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#910808", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#990000", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#910808", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#8A0F0F", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#821717", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#7A1F1F", xysize=(config.screen_width, config.screen_height))
0.05
Solid("#732626", xysize=(config.screen_width, config.screen_height))
0.05
repeat
image darkend_sprite = ColorBlend("movie")
label start:
while 1:
show darkend_sprite
pause
hide darkend_sprite
pause
We prolly can't use webms for this, they all have to run on separate channels to avoid timing collisions. Than can add badly.Too late for that, there are at least two damage effects based on webm.
Too late for that, there are at least two damage effects based on webm.
mod.id + "_besprite_idle"
image mikudance_besprite_idle = Movie(channel="miku", .....webm, ...)
and etc. elif type == "on_darkness":
be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.7
size = (int(target.besprite_size[0]*1.5), int(target.besprite_size[1]*1.5))
what = Fixed(target.besprite, Transform(be_dark_mask, size=size, offset=(-30, -50)))
t = self.target_sprite_damage_effect.get("duration", 1)
at_list=[fade_from_to_with_easeout(start_val=1.0, end_val=0.2, t=t)]
And P2P skills want it in assets.rpy:init -1:
...
python:
be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.
You can see them both in the last push. Once I remove one of them, corresponding BE functions cannot find it any longer and give ctd.
You can see them both in the last push. Once I remove one of them, corresponding BE functions cannot find it any longer and give ctd.
Midnight Arrow.
elif type == "new_fire":
what = AlphaBlend(Transform(target.besprite, alpha=.8), target.besprite, damage_color(*target.besprite_size), alpha=True)
# what = AlphaBlend(Transform(target.besprite, alpha=.8), target.besprite, Transform("fire_mask", size=target.besprite_size), alpha=True)
elif type == "new_fire":
# what = AlphaBlend(Transform(target.besprite, alpha=.8), target.besprite, damage_color(*target.besprite_size), alpha=True)
what = AlphaBlend(Transform(target.besprite, alpha=.8), target.besprite, Transform("fire_mask", size=target.besprite_size), alpha=True)
size = (int(target.besprite_size[0]*1.5), int(target.besprite_size[1]*1.5))
what = Fixed(target.besprite, Transform("content/gfx/be/frozen_2.png", size=size, offset=(-30, -50)))
t = self.target_sprite_damage_effect.get("duration", 1)
at_list=[fade_from_to_with_easeout(start_val=1.0, end_val=0.2, t=t)]
For ice, it's for example Big Ice Break weapon skill, also against MC party.
The issue with ice is especially weird: Blizzarja spell also uses "frozen" damage effect, and works properly. But Big Ice Break skill for some reason resizes the png sprite to fit into target sprite, even though their code is almost the same.
I don't understand what your new darkness effect is supposed to do, it looks like an extra attack.Something like the effect which you added to show whose turn is it atm. Like an aura of energy swarming around the target feet. Current resizing works much worse for small webms, so it stopped me from figuring out and setting required offset to make it look like an aura.
Best I can tell they both resized in exactly the same way and look pretty good.You right, I was confused by massive blizzarja animation around the target, so it felt like png is bigger too.
I've commented out code from python block in the init and there are no ctd with Midnight Arrow. These effects are drawn from one place, there should be no need for redefining them.I think I confused two dark effects yesterday, we have three different ones :D
Did you try out my proof of concept from earlier post? I'll throw it into pytfall to use with some fire animation so we can see what it looks like, hold on...Yes, looks great. We already have two mask-based fire effects, but it will be perfect for healing effect which used to recolor sprites.
Edit: Pull and try Firaja. Keep in mind that those were randomly picked colors.
be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.
As you can see by its path, it's located in the autowebm folder. So in theory I don't have to define it anywhere in the game as long as I call it by its name, be_dark_mask. That's how all spells/skills webms inside BE worked so far. elif type.startswith("on_darkness"):
be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.
size = (int(target.besprite_size[0]*1.5), int(target.besprite_size[1]*1.5))
what = Fixed(target.besprite, Transform(be_dark_mask, size=size, offset=(-30, -50)))
t = self.target_sprite_damage_effect.get("duration", 1)
Code: [Select]be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.
As you can see by its path, it's located in the autowebm folder. So in theory I don't have to define it anywhere in the game as long as I call it by its name, be_dark_mask. That's how all spells/skills webms inside BE worked so far.
And yet if I don't define the webm here, I will get ctd.Code: [Select]elif type.startswith("on_darkness"):
be_dark_mask = Transform(Movie(channel="main_gfx_bow", play="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/movie.webm", mask="content/gfx/autowebm/be_dark_mask inf main_gfx_bow/mask.webm"), zoom=1.2, alpha=0.
size = (int(target.besprite_size[0]*1.5), int(target.besprite_size[1]*1.5))
what = Fixed(target.besprite, Transform(be_dark_mask, size=size, offset=(-30, -50)))
t = self.target_sprite_damage_effect.get("duration", 1)
what = Fixed(target.besprite, Transform(be_dark_mask, size=size, offset=(-30, -50)))
As for the new darkness effect, it basically should look like the effect which shows whose turn is it - maybe with different Y offset though.
Check our Darkra... Itachi amaterasu all the wayIndeed. But we lack a suitable darkness spell for such cool effect, unfortunately. It will have to wait until beta.
You way is better because you're using a different channel here from what we normally do and that can be very importantNah, autowebm folder allows to freely change channel. The darkness effect uses main_gfx_bow channel, it is also used by p2p-type skills to show the bow, which is no longer visible by the time we need to show any damage effects.
If it's the effect presently bound to Dark spell, it seems to do exactly what you suggest, it's like a dark aura/cloud over the sprite. It kinda looks like an attack or part of that attack, not a sprite effect but it is scaled pretty well for both sides.How should I say... It scales too much by Y axis. If you compare the screenshots, you can see the difference in Y axis part.
How should I say... It scales too much by Y axis. If you compare the screenshots, you can see the difference in Y axis part.
Let me rephrase it: only its length aka X aixs should scale according to sprite width. The height aka Y axis should remain the same = original sprite height.
Sadly, the new way of recoloring sprites cannot reproduce the effect of decreasing or increasing brightness which I used for darkness and light damage effects. It just doesn't look right, no matter the colors.
I found an opened dropbox folder full of animations (the new darkness effect is from there), maybe I'll find something for light there too.
We need tiers mostly to control wages and daily income. And also to pick a more or less rich background for character room. It can't be THAT difficult :)
Figure out how skills/stats/level combinations convert to performance. We plainly need a sharp way to figure out what's character is good for during jobs and world actions.For example, any action has difficultly. Performance = tier level/difficulty level. If character has 100 cleaning and 2 tier, but the difficulty of cleaning task is 10, then her cleaning becomes 100 * (2/10) = 20. Same for stats.
When specific level, relevant skills and stats are reached by character, tier goes up. Together with wage/accommodations. And wage/accommodations stay put until the next tier. That was your plan. It's simple enough, checking level, stats and skills every turn.
Although, there should be more checks than just level and stats - maybe something like fame. Otherwise it will be too easy.
For example, any action has difficultly. Performance = tier level/difficulty level. If character has 100 cleaning and 2 tier, but the difficulty of cleaning task is 10, then her cleaning becomes 100 * (2/10) = 20. Same for stats.
You still can overcome the penalty by having huge skills and stats, but tiers make it much easier.
If you need something coded in, let me know tonight cause I am leaving tomorrow and will be back on Monday if all goes well. I'll have my laptop but no idea what kind of internet connection will be available.Ok, here is a case for you: in the last push for testing I just changed sprites of mobs used in BE testing mode to webm. Now I get
File "game/library/be/labels.rpy", line 76, in script
python:
File "game/library/be/labels.rpy", line 80, in <module>
battle.start_battle()
File "game/library/be/core.rpy", line 178, in start_battle
self.show_char(i, at_list=[Transform(pos=self.get_icp(team, i))])
File "game/library/be/core.rpy", line 262, in get_icp
sprite = char.show("battle_sprite", resize=char.get_sprite_size("battle_sprite"))
File "game/library/characters/classes - characters.rpy", line 3371, in show
return prop_resize(what, resize[0], resize[1])
File "game/library/UDDs.rpy", line 784, in prop_resize
ratio = min(maxwidth/float(width), maxheight/float(height))
ZeroDivisionError: float division by zero
Ok, here is a case for you: in the last push for testing I just changed sprites of mobs used in BE testing mode to webm. Now I get
It was a bad design to use mob name as a base for webm name. Because mobs names may have spaces, while autowebm folder uses spaces as separators to define webms properly. These logics are incompatible.
"be_webm_sprites": {"idle": ["BlStar_idle", [200, 150]]},
elif type.startswith("on_darkness"):
size = int(target.besprite_size[0]*1.5), 60
what = Fixed(target.besprite, Transform("be_dark_mask", size=size, align=(.5, .5)), xysize=(target.besprite_size))
if type.endswith("shake"):
at_list = [damage_shake(0.05, (-10, 10))]
Hmm just found a rpg maker MV game that has nice combat animations.. ( well spine movements ) it uses pixi-spine you know about that system ? from a png image containing body part and a json they make character animation like kick/block/idle movements .. well maybe it wont work on renpy..
I could render parts with blender and put them in a single .png then .atlas and .json does all the rotation of any of those part to make animation..
From the viewpoint of design if we aim to have more or less animated battle sprites for everyone, then we need simple looped animations for all mobs. Ie we need an artist willing to draw sprite sheets which I can animate, since finding enough free, animated 2D mobs with decent resolution is impossible.
I don't really know why you want to have animated sprites anyway, BE is plenty cool with still images and animated overlays.Many looped db animations cannot be used as spells. Now it's possible to use them as rare, non humanoid mobs. That's the whole reason :)
The idea is to give that screen the amount of xp which every character should get (as a list of numbers), and then the screen shows how bars gradually (for 4-5 seconds) become fuller. They also should reset once character levels up, multiple times if needed.
Yeap, I can't do the real time bars part on my own.
I want to show how a group of chars gets exp after a fight (including arena) or some other event. I use portraits and xp bar from hero profile, the prototype is in the last push.
The idea is to give that screen the amount of xp which every character should get (as a list of numbers), and then the screen shows how bars gradually (for 4-5 seconds) become fuller. They also should reset once character levels up, multiple times if needed.
But I'm not sure how to animate the process in real time.
Instead take a look at label storyi_bossroom. I use there star animation which looks flawlessly as long as I don't change its zoom. And when I do, it looks like it uses wrong anchor or something.
show sinister_star at Position(xpos = 704, xanchor=0.5, ypos=91, yanchor=0.5):
anchor (0.5, 0.5)
zoom 0.03
alpha 0
linear 1.5 alpha 1.0
show sinister_star:
pos (704, 91)
anchor (0.5, 0.5)
zoom 0.03
alpha 0
linear 1.5 alpha 1.0
using Position is always a mistake, it's there only for backwards compatibility and should never be used in modern code for a number of reasons.Really? I figured it would be the same as "show at left".
Really? I figured it would be the same as "show at left".
show sinister_star at Transform(pos=(704, 91), anchor=(.5, .5))
No, it solved nothing. The star still deviated left and right while being zoomed. I thought it's because of animation imperfection which is not visible under normal circumstances, but even the single first frame of the animation looked the same while being zoomed.
Subpixel True helped, I wonder though while it worked incorrectly only during zoom.
What we have now sounds reasonableAtm we have 24 scrolls in the dev mode, about 1/3 of the total count. Because I animated other spells after I created scrolls json.
Can you attach a list with the spell names and maybe what they doI attached the file with spells code. Spells start after
##### Magic:
line. P2P_Skill(u"Fireball", menu_pos=0.5, attributes=["magic", "fire"], effect=50, multiplier=1.3, mp_cost=30, range=4, piercing=True,
desc="Launches an exploding fireball at one enemy.",
projectile_effects={"gfx": "fire_6", "sfx": "content/sfx/sound/be/fire7.mp3", "duration": 1.0},
main_effect={"gfx": Transform("fire_6_1", zoom=1), "sfx": None, "duration": 1.2, "aim": {"anchor": (0.5, 0.5), "xo": 0 ,"yo": 0}},
attacker_effects={"gfx": "fire_2", "sfx": "default"},
target_sprite_damage_effect={"gfx": "burning_with_shake", "initial_pause": 0.1, "duration": 0.7},
target_death_effect={"gfx": "dissolve", "initial_pause": 0.1, "duration": 0.5},
dodge_effect={"initial_pause": .1})
For example, Fireball is name, and "Launches an exploding fireball at one enemy" is description.
main_effect={"atl": ice_storm, "predict": ["ice_twin_explosion", "ice_strike"], ...
Should I use predict too somehow?
I just noticed unusual lines in some spells.Code: [Select]main_effect={"atl": ice_storm, "predict": ["ice_twin_explosion", "ice_strike"], ...
Should I use predict too somehow?
import os
#adapt these:
dungeon_dir = 'P:\\ath\\to\\PyTFall\\game\\content\\dungeon\\'
# what objects you want to render, there can be multiple. These objects will be moved about.
tgts=["ring"]
# a tag to append to the folder name
tag="ring"
# the light indication to use in the folder name, either '' (dark) or '_torch' (light)
light=''
# Also make sure that only for the objects below the `camera' is set (in outliner - to ensure these are rendered only)
# - the object you want to draw (here: ring)
# - Camera
# - The light you want to render (for the red stones: mossy_dark or mossy_light)
sc = bpy.data.scenes["render"]
bpy.context.screen.scene = sc
origloc = {}
for obj in sc.objects:
if any(obj.name[:len(t)] == t for t in tgts):
origloc[obj.name] = [obj.location[0], obj.location[1]]
distal = {"b": 2, "c": 4 }
for depth in range(0, 6):
y = (depth-1)*2
for side in ["left%dc", "left%db", "left%d", "front%d", "right%d", "right%db", "right%dc"]:
x = 2 if side != "front%d" else 0
dir = dungeon_dir
if os.path.isfile(dir+"blender_break"):
continue
filename = os.path.join(dungeon_dir + tag + light, "dungeon_" + tag + light + "_" + side % depth)
if os.path.isfile(filename+".png"):
print(filename+" exists")
continue
if x:
if side[-1] in distal:
v = distal[side[-1]]
if depth < v:
continue
x += v
if side[:4] == "left":
x = -x
for obj in sc.objects:
if not obj.name in origloc:
continue
if x:
if side[:4] in obj.name:
obj.hide_render = True
obj.hide = True
continue
elif "left" in obj.name or "right" in obj.name:
obj.hide_render = True
obj.hide = True
continue
obj.hide_render = False
obj.hide = False
obj.location[0] = origloc[obj.name][0] + x
obj.location[1] = origloc[obj.name][1] + y
bpy.context.screen.scene = sc
bpy.context.scene.objects.active = obj
obj.select = True
bpy.data.scenes["render"].render.filepath = filename
bpy.ops.render.render(write_still=True)
sc = bpy.data.scenes["render"]
bpy.context.screen.scene = sc
for obj in sc.objects:
print(str(obj.name))
if not obj.name in origloc:
continue
if "left" in obj.name or "right" in obj.name:
obj.hide_render = True
obj.hide = True
continue
obj.hide_render = False
obj.hide = False
obj.location[0] = origloc[obj.name][0]
obj.location[1] = origloc[obj.name][1]
bpy.context.screen.scene = sc
bpy.context.scene.objects.active = obj
obj.select = True
blender zip is shared here: here (https://file.io/KOFmeR), below a small tutorial how I created objects in all orientations.I get 404 error trying to download it ::)
I get 404 error trying to download it ::)
if i had python skills for blender i could generate all this but its not the case atm.. same for my girls renders.. im using some badly made scripts to get Daz models in but lots of problem.. and i added the correcting morphs manually and they work with drivers so i never wave something ugly when extreme posing something..I suppose Xela can handle it if you explain what you need clearly and in details.
(but i could use a script that does all that.. load every morph target/bone axis + and - then assign the required drivers)
I suppose Xela can handle it if you explain what you need clearly and in details.
dodge_effect={"gfx": AlphaBlend("magic_shield_webm", "magic_shield_webm", gray_shield(340, 330), alpha=True)}
would actually work, replacing the default one.
Ok nm i see what you want you can get out of those renders but its not as highly detailed as i expected.. there are some free resource out there for walls that looks great with bricks volume or crevasse/cracks into walls and with diffuse/norm/spec/AO maps provided
Xela, I need the option to control the "resist" animation which shows when magic shields from DefenceBuffSpell work. Just like every spell has its own buff icon, they could use a field for the resist animations.
Because without it I pretty much cannot change the main_effect animation for shields, any other webm won't suit the default resist animation.
elif "magic_shield" in target.beeffects:Would be cool have different "resist" per shield spell, just like we have different icons for them.
if self.target_sprite_damage_effect.get("gfx", None) not in ["fly_away"]: # This should ensure that we do not show the shield for major damage effects, it will not look proper.
tag = "dodge" + str(index)
renpy.show(tag, what=ImageReference("resist"), at_list=[Transform(size=(300, 300), pos=battle.get_cp(target, type="center"), anchor=(.5, .5))], zorder=target.besk["zorder"]+1)
DefenceBuffSpell("Solid Shield", menu_pos=-1, attributes=["status", "earth"], kind="buff", defence_multiplier={"melee": 3.0}, buff_group="melee shield", vitality_cost=0.7, mp_cost=0.2, buff_icon=ProportionalScale("content/gfx/be/buffs/big_melee_def.png", 30, 30), range=4, type="sa",
desc="Sets up a powerful force field around the target, shielding from melee damage.",
main_effect={"gfx": Transform("magic_shield_webm", zoom=1.1), "sfx": "content/sfx/sound/be/m_shield.ogg", "duration": 1.27, "aim": {"point": "center", "anchor": (.5, .5), "yo": 0}},
target_sprite_damage_effect={"gfx": None},
target_damage_effect={"gfx": None},
target_death_effect={"gfx": None},
resist_effect={"gfx": "resist"})
DefenceBuffSpell("Solid Shield", menu_pos=-1, attributes=["status", "earth"], kind="buff", defence_multiplier={"melee": 3.0}, buff_group="melee shield", vitality_cost=0.7, mp_cost=0.2, buff_icon=ProportionalScale("content/gfx/be/buffs/big_melee_def.png", 30, 30), range=4, type="sa",
desc="Sets up a powerful force field around the target, shielding from melee damage.",
main_effect={"gfx": Transform("magic_shield_webm", zoom=1.1), "sfx": "content/sfx/sound/be/m_shield.ogg", "duration": 1.27, "aim": {"point": "center", "anchor": (.5, .5), "yo": 0}},
target_sprite_damage_effect={"gfx": None, "shield_gfx": "magic_wall"},
target_damage_effect={"gfx": None},
target_death_effect={"gfx": None},
resist_effect={"gfx": "resist"})
elif "magic_shield" in target.beeffects:
gfx = self.target_sprite_damage_effect.get("shield_gfx", ImageReference("resist")) # We use "resist" as default...
if gfx not in ["fly_away"]:
if gfx == ImageReference("resist"): # This should ensure that we do not show the shield for major damage effects, it will not look proper.
tag = "dodge" + str(index)
renpy.show(tag, what=gfx, at_list=[Transform(size=(300, 300), pos=battle.get_cp(target, type="center"), anchor=(.5, .5))], zorder=target.besk["zorder"]+1)
elif gfx == "magic_wall":
tag = "dodge" + str(index)
renpy.show(tag, what=..., at_list=[...], ...)
Yeah, I tried to change the code like that on my own, it didn't work. It still doesn't work, the animation is always default (pull my last push with an example).
We kinda know something, because for example melee shield animation won't be active against a spell. So there is a check of some kind.
defence_gfx="gray_shield",
class Mirage(renpy.Displayable):
def __init__(self, displayable, resize=(1280, 720), ycrop=8, amplitude=0, wavelength=0, **kwargs):
It's fine only as long as battle background is 1280x720 already. If it's not, then before animation appears you see abrupt change in size, and then it jumps back to initial size after the animation. It looks terrible.Mirage class used for special effects inside BE enforces background resizing.Code: [Select]class Mirage(renpy.Displayable):
It's fine only as long as battle background is 1280x720 already. If it's not, then before animation appears you see abrupt change in size, and then it jumps back to initial size after the animation. It looks terrible.
def __init__(self, displayable, resize=(1280, 720), ycrop=8, amplitude=0, wavelength=0, **kwargs):
I'm not sure why you have to resize something before miraging it, but we need a decision here: either you make it universal or I resize all battle backgrounds.
I think it works, although it's probably a free invitation for anyone. I wonder if discord keeps chat history like the forum chat does.
class Rank(_object): # Will not be used for the next release...
"""
Ranks, currently not in use in the game.
"""
WhRANKS = OrderedDict()
WhRANKS["0"]=dict(name=('No Rank: Kirimise', '(Almost beggar)'), price=0)
WhRANKS["1"]=dict(name=("Rank 1: Heya-Mochi", "(Low-class prostitute)"), skills={"oral": 10, "vaginal": 10, "anal": 5}, total_skill=100, price=1000, exp=10000) # note: refinement is not a stat anymore!
WhRANKS["2"]=dict(name=("Rank 2: Zashiki-Mochi", "(Middle-class Prostitute"), skills={"oral": 25, "vaginal": 15, "anal": 15}, total_skill=300, price=3000, exp=25000)
WhRANKS["3"]=dict(name=("Rank 3: Tsuke-Mawashi", "(Courtesan)"), skills={"oral": 55, "vaginal": 40, "anal": 25}, total_skill=600, price=5000, exp=50000)
WhRANKS["4"]=dict(name=("Rank 4: Chûsan", "(Famous)"), skills={"oral": 100, "vaginal": 80, "anal": 50}, total_skill=1000, stats={"refinement": 100}, price=7500, exp=100000)
WhRANKS["5"]=dict(name=("Rank 5: Yobidashi", "(High-Class Courtesan)"), skills={"oral": 250, "vaginal": 150, "anal": 130}, total_skill=1250, stats={"refinement": 150}, price=10000, exp=250000)
WhRANKS["6"]=dict(name=("Rank 6: Koshi", "(Nation famous)"), skills={"oral": 500, "vaginal": 500, "anal": 500}, total_skill=2500, stats={"refinement": 500}, price=25000, exp=400000)
WhRANKS["7"]=dict(name=("Rank 7: Tayu", "(Legendary)"), skills={"oral": 1500, "vaginal": 1500, "anal": 1500}, total_skill=5000, stats={"refinement": 800}, price=50000, exp=800000)...
Naturally, I cannot use skype or discord at work as freely as forum, since they require more undivided attention than logging in, writing a post and logging out.
Every next rank might be harder to get than previous one, so 10 is fine. The question is, what to do after 10th rank has been achieved.
Also some simple jobs might have less ranks in total - like cleaner. Assuming that it won't be too confusing.
I'm not satisfied with shields icons, they are pretty, but uninformative - even for me, even though I added them myself. I'll make more understandable ones.
And some elemental damage effects could use more work after we had to get rid of sprites recolors.
But in terms of bringing the release closer these things are as effective as making packs or adding items :D
I can't find the code where you make buffs icons change alpha all the time. It should be reduced, they do it too much.
add Text(status_icon) at status_overlay(sv1=.3, ev1=1.0, t1=.9, sv2=1.0, ev2=.3, t2=.9) yalign .5
Eventually we could take into account perspective inside BE - the closer characters battle sprites to the camera, the bigger they are, within very moderate limits. Especially if you'll go for UDD rewriting.
The dungeon is minimal but has the elements in place to function. Spawn moves and is killed on the first hit, all items on the first level can be picked up but no real inventory hooks yet. They are probably next on the list. What do you think so far?
If you try and get stuck.. there's a button to open the doors.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/library/screens/dungeon.rpy", line 404, in script
call screen dungeon_move(hotspots)
File "renpy/common/000statements.rpy", line 471, in execute_call_screen
store._return = renpy.call_screen(name, *args, **kwargs)
File "game/library/screens/dungeon.rpy", line 162, in execute
screen dungeon_move(hotspots):
File "game/library/screens/dungeon.rpy", line 162, in execute
screen dungeon_move(hotspots):
File "game/library/screens/dungeon.rpy", line 164, in execute
for sw in reversed(show):
File "game/library/screens/dungeon.rpy", line 165, in execute
if isinstance(sw, list):
File "game/library/screens/dungeon.rpy", line 166, in execute
if sw[2]:
File "game/library/screens/dungeon.rpy", line 194, in execute
add mco at [sprite_default(xx, yy, xz, yz, rot)]
File "game/library/screens/dungeon.rpy", line 194, in keywords
add mco at [sprite_default(xx, yy, xz, yz, rot)]
NameError: name 'yy' is not defined
Do we keep slaves running away events for beta? Because we have a few items left from the ST attempt which give Restrained trait, it should prevent escaping in theory.
def __init__(self, mod=None, min=None, max=None, props=None, flags=None, traits=None, noTraits=None, effect=None, noEffect=None, funcs=None):
"""
Creates a new PytStatCheckCheck instance.
mod = A condition dict to match stats or skills.
min = A condition dict to match minimum stats.
max = A condition dict to match maximum stats.
props = A condition dict to match character properties.
flags = A condition dict to match flags.
traits = A list of traits needed.
noTraits = A list of traits that aren't wanted.
effect = A list of effects needed.
noEffect = A list of effects that aren't watned.
funcs = A list of functions to call.
mod, min, max, props and flags shoud be formatted as:
{
"lt": An object of {"stat": number} keys to match a < condition.
"le": An object of {"stat": number} keys to match a <= condition.
"eq": An object of {"stat": number} keys to match a == condition.
"ne": An object of {"stat": number} keys to match a != condition.
"ge": An object of {"stat": number} keys to match a >= condition.
"gt": An object of {"stat": number} keys to match a > condition.
And I'm not a fan of checking conditions using special keys, it works much better in quests system where you can just pass usual condition string...
We need an item field which makes items equipable only on slaves, just like gender field does it for genders. Even without ST we have some items that free chars should never agree to use.
for trait in self.traits:
if trait in trait_selections["badtraits"] and item in trait_selections["badtraits"][trait]:
return None
if trait in trait_selections["goodtraits"] and item in trait_selections["goodtraits"][trait]:
chance.append(100)
if trait == "Kamidere": # Vanity: wants pricy uncommon items
chance.append((100 - item.chance + min(item.price/10, 100))/2)
elif trait == "Tsundere": # stubborn: what s|he won't buy, s|he won't wear.
chance.append(100 - item.badness)
elif trait == "Bokukko": # what the farmer don't know, s|he won't eat.
chance.append(item.chance)
for t in self.traits:
# bad eyesightedness may cause inclusion of items with more penalty
if t == "Bad Eyesight":
min_value = -10
# a clumsy person may also select items not in target skill
elif t == "Clumsy":
target_skills = set(self.stats.skills.keys())
# a stupid person may also select items not in target stat
elif t == "Stupid":
target_stats = set(self.stats)
elif t == "Smart":
upto_skill_limit = True
I never thought about using traits as modifiers for equipment chances.
"blocks_equipping": ["slave"]
It's not normal to have regular headaches btw, it usually means lack of blood supply to the brain, and should be treated, not endured. I know what I'm talking about, proper treatment helps (real treatment, not alcohol :) )
That being said, I do hope it means the "pytfalls time" will be the next time you gonna code, not only after another BR session which can give you another headache, killing any progress whatsoever.
considering that it just handles ST and a very small part of schools.
Yeah... I think it needs to be written anew because of that. Rewriting code like that take (in my case) 3 - 5 times longer that it would take to write a new design based of old data/content.As far as I understand, it was written to support free-for-all ST, when you can have 100 slaves trained by 200 different characters without even involving MC himself.
It doesn't solve the problem with items from ST though: either you make sure running away works and items that prevent it work too, or I remove all ST-related items until ST rewriting, which will happen after the beta. Because during beta they will just confuse everyone.
As far as I understand, it was written to support free-for-all ST, when you can have 100 slaves trained by 200 different characters without even involving MC himself.
I played only one game with a similar concept, Otherworld. And its development ended very badly :D
WM doesn't count since you can have only one dungeon assistant there.
In ST, JoNT and several half-translated Japanese games that I played player still should actively participate in ST, it's never a mass, conveyor production. You still can have assistants, but they cannot train without the main character.
You once proposed to use special lines for characters when you for example give them very good item. It's a bad design because it forces the player to click over that line every time.
But if such special lines are said without requiring additional actions from the player, then it's not a bad design any longer. Ie we don't use the narrator window and wait for mouse click, we show the line in a small window next to character sprite, it does not affect gui at all and disappears by itself after some time.
I mean something like that small dialogue window (https://www.dropbox.com/s/6bov1huiqtxjirr/321.jpg?dl=0) in the bottom left corner in last Atelier games.
I pushed a dialogue frame, it even should be suitable for resizing of any kind.
Looks like I will have much more free time closer to summer than usual, and it will last several months. It can lead to major development progress if you'll manage to settle things on your end.
Specs?
Ooh, nice. Do you use an ups?
Btw now you may have the same text scaling issues in renpy as me on my win10 laptop.
So, does our current BE have anything to do with Jake's BE? Like parts of code or general logic. Because it's mentioned in credits atm.
It happens when you use screen scaling (https://www.thurrott.com/windows/windows-10/4597/windows-10-feature-focus-display-scaling) in win10 plus extend in renpy. Spaces between characters in text change a bit after every extend.
or/and you can put together a Fairy Tail pack if you don't have one already. If you feel up to it, you can try and setup dev environment for pytfall to see how your creations feel in the game.Sure, i can give that a go. Think i have one or two of the Fairy Tail girls laying arouind somewhere.
Hah! I'm honored. xD
A fun fact: someone added a turban item for head slot (don't remember who, not me) as an Easter egg related to Lurker's profile picture :)
Sure, i can give that a go.
And it doesn't support the most convenient and reliable way of running non unicode applications, applocale :(
I personally hate minimalistic win10 design. White borderless windows everywhere, as if it's not a pc screen but a stack of paper documents. And no aero on top of that.
Let us know if you need help, it's not easy to figure out, especially if you never dealt with git before.
Oh i got the game running just fine. Get a bunch of script errors at some places though, dunno if thats how it is or if i did something wrong. xD
There should be no errors... dev version runs without any obvious crashes.
No crashes. Just an error that seems to relate to girlpacks. (I only have 1 unique and 1 random installed) And 1 error in the Jail when i go to the cells. I'll try to install it again though see if that helps.
Jail may be bugged. You should not have to install anything, just sync with git server and get renpy devkit.
That is bad code for a number of reasons but you do not have any characters..? Otherwise, even under bad code, this should not occur. I'll see if this can be improved and if git is working on new os.
I downloaded some of Darks girls and made a chars and rchars folder and put them in the content folder. No girls show up in game though.
You need their data files as well, packs and data files are separate from one another.
No, it should be Pytfall\game\content\chars\Naruto. You can't just throw them into chars folder :)
Right. I tried it with the naruto folder too. Do i need to drop the json files in the naruto folder aswell?
Yeap. I used to load from the main folder as well, we prolly disabled it for some reason. You should also have at least one random girl, preferably them all (it's just about 10 total I think).Only have 2 atm
You also may want this (https://www.dropbox.com/s/5uiox4ka1oisgu5/testing.rpy?dl=0) file in Pytfall\game\library, it's our testing file which gives some characters from the very beginning for easier testing.
As for random chars, I keep them all in one folder, rchars\random. But it's not mandatory, they all could be in different folders.
The testing file goes in the game folder im guessing?In Pytfall\game\library.
Does the game add traits to girls at random or do i do that myself when making a pack? If so how do i go about it?Traits are located in jsons. Like
"random_traits": [
["Long Legs", 20],
["Big Boobs", 40],
["Elegant", 10],
["Clumsy", 10],
["Virgin", 90],
["Tsundere", 50],
["Kuudere", 50],
["Yandere", 15],
["Frigid", 10],
["Lesbian", 15],
["Bisexual", 10],
["Human", 100]
],
Xela, you should improve it to show the message if the game doesn't see characters, no matter the folders.
Another question: Does the game add traits to girls at random or do i do that myself when making a pack? If so how do i go about it?
Traits are located in jsons.
We are in process of improving character design so this is a subject to change. Dark is correct otherwise and most of this data will remain in use.
Right so i make my own jsons then i guess?Well, I usually take existing one, edit it and save under another name, it's a bit faster than creating a new one :D
Well, I usually take existing one, edit it and save under another name, it's a bit faster than creating a new one :D
Xela, you promised to look at the Pico's dungeon code this week to figure out how good it is and how well we can use it in the future.
I don't think it's super hard to render stuff, multiple people did it for us on many occasions. I didn't know how to make webm animations just a year ago :)
But if we gonna use it, it definitely should support random dungeons building.
I never had any problems with our repo at win10 btw, it works there just like it works on win7.
You once proposed to use special lines for characters when you for example give them very good item. It's a bad design because it forces the player to click over that line every time.
But if such special lines are said without requiring additional actions from the player, then it's not a bad design any longer. Ie we don't use the narrator window and wait for mouse click, we show the line in a small window next to character sprite, it does not affect gui at all and disappears by itself after some time.
# Free girls should always refuse giving up their items unless MC gave it to them:
# (Unless action is forced):
if not force:
if all([isinstance(source, Char), source.status != "slave", not(check_lovers(source, hero))]):
if any([item.slot == "consumable", (item.slot == "misc" and item.mdestruct), source.given_items.get(item.id, 0) - amount < 0]):
if not silent:
source.override_portrait("portrait", "indifferent")
if "Impersonal" in source.traits:
It's pure python code all over, so labels cannot be called. Thus you had no choice but to add lines directly into the code.
I'm guessing the Special clothes tag are used for when the character wears non standard clothes like armor and bikinis and stuff. If the character is just in their normal clothes do i even need to touch these tags?You can if you want to. If character wears armor 99% of the time, I usually tag them as armor and as everyday clothes, since armor is everyday clothes for her.
The "sprite" (not battlesprite) images are just for the inventory screen etc, correct?For inventory, and sometimes when we need to show the character during dialogue outside of girlsmeets.
The profile images without a background, see-through with alpha channel, are mainly used for "girlsmeets" tag, yes?Yes, but most of them can be used as profile pictures too. Alpha channel is not mandatory though, I just keep it sometimes if I like it.
You can if you want to. If character wears armor 99% of the time, I usually tag them as armor and as everyday clothes, since armor is everyday clothes for her.
Not yet. I have it in plans after the beta release, that's why we have these tags.
It would be very easy if we could guarantee that every character will have all tags. But since we work with packs and have no control over pictures, algorithms for showing the best possible picture are quite complex. The algorithm for showing pictures during sex scenes has over 700 lines of code.
Emotions tags are used already. Not as widely as they should, but the game will show you different profile pictures and portraits depending on character joy level.
Cant wait til you guys get beta out so I can start pumping out a couple packs off the bat.Yeap, it's been 3 years since the alpha. The game was pretty amateurish back then, now we know much more about coding and creating resources.
Pregnancy pics are very rare for many characters. If we'll have pregnancy (nothing wrong with it, aside from the fact that 1 turn = 1 day, while in WM 1 turn = 1 week, so it will take a lot of turns), we will avoid showing pregnancy pics at any cost. Even if it means temporally removing character from the game.Yep yep makes sense, figured I'd check. :3
As for monsters, they are inconsistent. We try to match texts and pictures more than WM does it. But monsters pictures are very different. There could be humanoids of any kind, tentacles, animals, etc. It would be very hard to deal with them.
We could limit it, for example to tentacles only, to make sure texts are always correct. But in this case many characters simply won't have suitable monsters pictures, just like with pregnancy.
You once proposed to use special lines for characters when you for example give them very good item. It's a bad design because it forces the player to click over that line every time.
But if such special lines are said without requiring additional actions from the player, then it's not a bad design any longer. Ie we don't use the narrator window and wait for mouse click, we show the line in a small window next to character sprite, it does not affect gui at all and disappears by itself after some time.
Ok, there is no way to do this without blocking large parts of interfacethis is simply not true.
I never said we need it exactly for beta, butthis is simply not true.
There we go. (https://www.dropbox.com/s/v72ow41ooxbqef7/21342143.jpg?dl=0)
{
"id": "Mausoleum1",
"transparent": [
".4679bcABCD^",
".4679bcABCD^"
],
"r":"0....5...10...15...2v...25...30...35...4v...45...50...55...60...65...70...75...80...85...90...95..100 -> x",
"map": [
"###.##...c..........##d####2.222222....##......#....",
".....c...#222222222.3c.ccc.3......8....3..####...##b",
"##a####.#2...2..7...e#####322222f22########....####b",
"........#2...2......#......#....3...........####d##b",
".########2828274.674#.....4#....#############.......",
"....c...c..2...2#d##d.....6#....#.............222222",
"#####b#####22222#####......#.####bbbbbbbbbbbbb2.....",
"....#....#.......#..3.....4#.####.............2.9.9.",
"......##.a.#####...##......#....#...C.........2..9..",
"....###..#...cccccccccc.cccc....#..B2D...c....2.9.9.",
"....#...##...#......#......#....#...A...b2b...2..9..",
"^4..#.###d.....#.##C#......3....a........c....8....."],
"area": {
"#": "mossy", "2": "bluegrey", "3": "door", "4": "barrel",
"6": "more_barrels", "7": "barrel_crate",
"8": "bluegrey_door2", "9": "pilar", "a": "mossy_door2",
"b": ["portal", "portal_turned"],
"c": ["portal_turned", "portal"],
"d": "mossy_alcove", "e": "mossy_button", "f": "bluegrey_button",
"A": ["ladderb", "ladderl", "ladderr", "ladderf"],
"B": ["ladderl", "ladderf", "ladderb", "ladderr"],
"C": ["ladderf", "ladderr", "ladderl", "ladderb"],
"D": ["ladderr", "ladderb", "ladderf", "ladderl"],
"^": "ladderdownf"
},
"background": "dungeon_bluegrey%s_background",
"visible": "#2346789abcdefABCD^",
"container": ".d",
"area_hotspots": {
"(20, 2)": [{
"spot": [591, 287, 30, 30],
"actions": [{
"function": "renpy.play",
"arguments": ["content/sfx/sound/dungeon/button_click2.ogg", "voice"]
},{
"function": "renpy.play",
"arguments": ["content/sfx/sound/dungeon/open_door.ogg", "sound"]
},{
"function": "dungeon.access_condition.__setitem__",
"arguments": ["(20, 1)", {"access": true}]
}]
}],
"(32, 2)": [{
"spot": [591, 287, 30, 30],
"actions": [{
"function": "renpy.play",
"arguments": ["content/sfx/sound/dungeon/button_click2.ogg", "voice"]
},{
"function": "renpy.play",
"arguments": ["content/sfx/sound/dungeon/open_door.ogg", "sound"]
},{
"function": "dungeon.access_condition.__setitem__",
"arguments": ["(32, 3)", {"access": true}]
},{
"function": "dungeon.access_condition.__setitem__",
"arguments": ["(32, 11)", {"access": true}]
}]
}]
},
"item_hotspots": {
"Replica Sword": {
"spot": [614, 576, 127, 95],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You found a Replica Sword."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
},
"Shuriken": {
"spot": [621, 631, 91, 49],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You found Shuriken."],
"sound": ["content/sfx/sound/dungeon/shuriken.ogg", "voice"]
}]
}
},
"renderitem_hotspots": {
"dagger": {
"spot": [628, 420, 186, 20],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You found a dagger."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
},
"ring": {
"spot": [695, 429, 41, 11],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "This ring must be valuable!"],
"sound": ["content/sfx/sound/dungeon/ring.ogg", "voice"]
}]
},
"bottle": {
"spot": [670, 309, 58, 127],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "An elixer of some kind!"],
"sound": ["content/sfx/sound/dungeon/bottle.ogg", "voice"]
}]
}
},
"spawn_hotspots": {
"Goblin": {
"spot": [520, 442, 234, 269],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You killed the goblin."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
},
"Devil Rat": {
"spot": [540, 376, 212, 278],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You killed the rat."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
},
"Bats": {
"spot": [536, 40, 226, 249],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You killed the bats."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
},
"Bear": {
"spot": [562, 321, 184, 339],
"actions": [{
"function": "dungeon.say",
"arguments": ["", "You killed the bear."],
"sound": ["content/sfx/sound/dungeon/dagger.ogg", "voice"]
}]
}
},
"access": [".79bABCD^", ".79cABCD^", ".79cABCD^", ".79bABCD^"],
"conditional_access": ["3a8", "3a8", "3a8", "3a8"],
"access_condition": {
"(20, 1)": {"access": false},
"(32, 3)": {"access": false},
"(32, 11)": {"access": false}
},
"minimap": {
"#2def": "#4444",
"38a": "#5C4425",
"bcABCD": "#6a548e",
"ground": "#fff4"
},
"sound": {
"bump": "content/sfx/sound/dungeon/bump.ogg",
"locked": "content/sfx/sound/dungeon/locked.ogg"
},
"item": {
"(2, 1)": [{"name": "Replica Sword"}],
"(23, 3)": [{"name": "Shuriken"}]
},
"spawn": {
"(36, 1)": {"name": "Goblin", "level": 1, "timer": 0.5 },
"(5, 11)": {"name": "Devil Rat", "level": 1, "timer": 0.2 },
"(24, 5)": {"name": "Bats", "level": 1, "yoffs": -400, "timer": 0.3 },
"(2, 8)": {"name": "Bear", "level": 3, "size": 2, "timer": 0.8 }
},
"renderitem": {
"(20, 5)": [{"name": "ring" }, {"name": "dagger" }],
"(22, 0)": [{"name": "dagger"}],
"(9, 11)": [{"name": "bottle", "function": "im.matrix.tint", "arguments": [0.1, 0.5, 0.1] }],
"(48, 3)": [{"name": "bottle", "function": "im.matrix.tint", "arguments": [0.5, 0.1, 0.1] }]
},
"event": {
"(19, 11)": [{
"function": "dungeon.say",
"arguments": ["", "Finally, there's a hatch here, you climb out of the catacombs."]
},{
"function": "dungeon.__delattr__",
"arguments": ["hero"]
},{
"function": "renpy.jump",
"arguments": ["graveyard_town"]
}],
"(0, 11)": [{
"function": "dungeon.say",
"arguments": ["", "You descend the stairs."]
},{
"load": "Mausoleum2",
"at": { "x": 27, "y": 26, "dx": 0, "dy": 1 }
}],
"(25, 1)": [{
"function": "renpy.play",
"arguments": ["content/sfx/sound/dungeon/open_door.ogg", "sound"]
},{
"function": "dungeon.access_condition.__setitem__",
"arguments": ["(20, 1)", {"access": false}]
}],
"(13, 0)": [{
"function": "dungeon.say",
"arguments": ["", "Something in here smells really bad."]
}]
}
}
Here's Erza beta. xD Figured id toss it to you guys so can check it out at your leasure and then tell me whats shit and whats good.
iirc, be sprite for characters needs to be oriented from left to right, something along these lines:
https://s-media-cache-ak0.pinimg.com/originals/b7/d5/d1/b7d5d1e9b4c632b63975632aa7fdae1f.png (https://s-media-cache-ak0.pinimg.com/originals/b7/d5/d1/b7d5d1e9b4c632b63975632aa7fdae1f.png)
It's difficult to test individual images for all occasions.
we need this for items transfer screen as wellI don't think so. It's not an important system message, it's a personal reaction directed to MC.
Here's Erza beta. xD Figured id toss it to you guys so can check it out at your leasure and then tell me whats shit and whats good.I don't have access to it, mega tells me the key is incorrect.
I don't have access to it, mega tells me the key is incorrect.
Looks very good.
I have only one advice, at some portraits you can see clothes, but at others she's nude. Ideally it should be avoided, for example defiant portrait is big enough to be cut just a bit.
But of course in many cases we don't have a choice.
I wanted to do some fun exploration guild thing with those chars but balancing stats is not gonna be an issue either way.
True, but to some point hidden partner trait is equal to it. When it's MC, we try to use pictures with hidden partner, and use others only if they don't exist.
I took a look at gelbooru, it's possible to make a solid pack for Wendy Marvell, and maybe for Lisanna Strauss (not sure about her without proper search).
For some reason the game incorrectly works with Erza battle sprite, position is entirely wrong. I bet it's related to unusual picture proportions.
Oh, btw we don't have to make portrait for all emotions, unless character has very suitable pictures without backgrounds, thus making portraits very simple.
Sad, indifferent, happy are the main ones, without them any pack is incomplete. Angry, uncertain and shy are very useful too. Others are highly optional.
I've exhausted my abilities to make the release closer many days ago. I finished all simple things, and complex ones are too complex. So I just improve resources and work on another big random pack.
True, that old concept of areal items is no longer useful.
I have an idea about npcs. A few years ago I found on g.e-hentai a pack of 200+ backgroundless npcs. They can easily replace random chars at the arena, not to mention they will be useful for events.
Can_equip function checks if it is legal for a character to use/equip the item. And may notify the player with a reason why an item cannot be equipped.
The problem is, it doesn't notify about anything during equipment. It just blocks the use/equip button silently. The reason of blocking might be obvious for us (like no armor for slaves), but can and will be confusing for players.
I propose to write the reason behind item's inaccessibility instead of item description on the equipment screen. Transfer screen doesn't need it, since you cannot use/equip items there.
There are another ways. Instead of disabling the use/equip button for unusable items we could make it red, and when the red button is pressed, it shows the message.
Yeap, this was very easy to implement. Take a look atGreat, now I have a place to show how many turns remained until consumable item will be usable again. I was wondering maybe it should be in item stats, but it looks much better as a part of the message.Equip:)
Alright, DarkIT, you slavedriver! I fixed all the transparent images. :DAwesome! They do look flawlessly now :)
One more thing, there is no need to add no_bg tag to portraits, battle sprites and sprites. Or clothes tags to portraits.
It won't hurt, but it won't help either, so it's just a waste of time.
Edit 2: And Levy McGarden.. No good battlesprite available so i winged it.
LoL! No kidding about winging it :)
She usually figures sh!t out in the sources but she can fight... this is her exploration outfit and better battle stance:
xD
Yeah i saw that image too. She just looked so adult compared to the other images. But ill add that one instead. Then I'm probably done with Fairy Tail. The other characters have to few good images. If you really want I can still through together some halfassed packs with some of the others.
Do Lisanna as well even if it'll turn out half-assed. Wendy's combat sprite is also poor but I can update that myself when I need them after the beta. Other chars I can add as pure fighters without image base other than portraits, vnsprites and battle sprites.
I started to add npcs. We probably will need special json format for them, since they not necessarily have fixed classes, just like random characters.
Let know me know if you need any other girls made.Do you think you can make a pack based on Ikkitousen?
Yes, they are. In order to make a character show only in specific location you need to specify this location name in json. Like "location": "hiddenvillage_entrance". Then they can be met there, and only there.
You need to know the internal location name to do it, meaning you have to open locations files. They are located in game\library\screens\locations. For example, in beach_cafe.json the very first line is "label city_beach_cafe", that's the location name.
So it will be "location": "city_beach_cafe" in character file if you want her to be there.
I'm not really sure what will happen if you specify more than one location, never tried it :D
Do you think you can make a pack based on Ikkitousen?
Right. Currently all of the fairy tail chicks are marked with City. But i had some show up at the beach.If you don't specify location, the game selects it based on traits. For example, for beach cafe
$ gm.enter_location(goodtraits=["Athletic", "Dawdler", "Always Hungry"], badtraits=["Scars", "Undead", "Furry", "Monster"], curious_priority=False)
Meaning chars with these goodtraits will like that place. But not chars with badtraits.
If you don't specify location, the game selects it based on traits. For example, for beach cafeCode: [Select]$ gm.enter_location(goodtraits=["Athletic", "Dawdler", "Always Hungry"], badtraits=["Scars", "Undead", "Furry", "Monster"], curious_priority=False)
Meaning chars with these goodtraits will like that place. But not chars with badtraits.
Yes, the game will use it as universal outdoors image. Pretty often you only can see sky and maybe clouds, but you can't tell anything else about location. It's a perfect example of generic outdoors picture.
Wtf? Scripted items with jump_to_label now used immediately after you select them in inventory, you don't even need to press the Use button! :(
You can also convert rest of NPCs to proper NPC Chars.There are several npcs in game\content\npc\arena. And they are rather popular characters, most of them can easily have a full fledged pack. I suppose someone wanted to use them as enemies at arena, but it makes no sense to do so using unique, well known characters with many pictures. I'm deleting them.
There are several npcs in game\content\npc\arena. And they are rather popular characters, most of them can easily have a full fledged pack. I suppose someone wanted to use them as enemies at arena, but it makes no sense to do so using unique, well known characters with many pictures. I'm deleting them.And turns out these npcs are hardcoded into the arena and cause dozens ctds when removed -_-
And turns out these npcs are hardcoded into the arena and cause dozens ctds when removed -_-Those are mine, really old from the time when arena was new. They were set in a way that worked with the old post-battle screen, but that's not the case anymore, so it's ok to remove them.
I'll remove them once you update the arena.
Lol, nice crew :D
And turns out these npcs are hardcoded into the arena and cause dozens ctds when removed -_-
I'll remove them once you update the arena.
I can tag an image SFW and Striptease, will it still work as intended or does it need to be Nude and Striptease?If she's really SFW, without nudity, then yes. Otherwise we may show her SFW picture when we need a nude one.
Whats Healing? Themselves or others?Others. Like casting non offensive spell, being dressed as a SFW nurse, have any kind of medical equipment in hands, etc.
Girlsmeets tag is only for meeting girls you dont own or employ?It's used in interactions with hired ones too.
Isn't there a whole event scripted by CW around (some of) them?Really? I never noticed, so I thought they are just generic fighters.
Though ive tagged a few nurse outfit images with Profile and Nurse clothing since i figure they'll show if you equip em with said nurse outfit. xDIf there are no healing pics, we'll try to show nurse+SFW. But not every healing picture has nurse outfit, that's why there is healing tag.
Formal clothing are fancy dresses or snappy suits etc?Well, formal is formal. Dresses suitable for special occasions, which are not usually worn by the character. Stuff like long evening dresses goes there, but it's not a strict category. Unlike the bunny outfit tag, where it only can mean bunny outfit.
Anywho.. Here's some Ikkitousen.I'll take a look later, can't access mega at work :)
Anywho.. Here's some Ikkitousen.Well, it gives ctd because at least one character has untagged images :D
It's weird to use popular characters with many hundreds pictures as npcs though, especially when there are many thousands less popular characters who can never have a pack without tons of rendering, but still have enough pics to be npcs at the arena.Characters from Rance and Umineko didn't have enough pictures for a pack, Tsukihime-melty blood girls do, but that team was just a reference to the carnival phantasm series without a serious though about it. (I have satsuki as a pack, but not planning atm to create other girls from that series)
But ok, we can find a solution if one day those chars will have full packs.
Actually, I got an idea. I have many characters in mind who can never have a pack, but have enough pics for the arena. I guess I'll add them as arena npcs while you coding jobs and SE.
If i mark an image with an Action (Striptease, Study, read etc) do i need to mark it with Profile, Girlsmeets etc or is the action tag enough?It's enough for the game to use the picture for that tagged action, yeah. We only need SFW or Nude tag no matter what, that's why the tagger does not allow to select an action before you select one of them.
My net is back! I'll take a look at whatever I promised to look at before it went down tonight, working on jobs/tiers as time permits.Welcome back :)
If we load them from special folder, tag is redundant... it's your choice, whatever you keep is more convenient. If you want to put them in char/rchar folders, than we need that field indeed, if someplace special, like: simple_chars for example, we can just flag them when loading from it.
# if direction and getattr(store, "dummy", None):
if getattr(store, "eqtarget", None) is self:
I'm going to add info about items, such as the values of mtemp and ctemp fields, to items gui. Otherwise it's too confusing without the knowledge about game mechanics and reading items jsons.
Should a make a girlpack post in User Mods or where do you want it?
We still need to show skills changes for items, probably in the same way as we do it for traits. But since it required your coding skills for traits, it also requires them for items :)
Perhaps just do not show skills there?
Just try to preserve image logic for whore jobs. It wasn't easy to come up with all those tags elifs to cover all possibilities.
checking_list = [2, 3, 4, 5, 6]
for i in dice_1:
if i in checking_list:
result_1.append(i)
checking_list.remove(i)
I wonder how to make it in one line in python. It checks if elements of dice_1 are in checking_list, but without repeats.
File "game/library/screens/next_day.rpy", line 120, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 120, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 107, in script call
call next_day_calculations
File "game/library/screens/next_day.rpy", line 168, in script
$ building.run_nd()
File "game/library/screens/next_day.rpy", line 168, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core_buildings.rpy", line 510, in run_nd
self.env.run(until=101) # 101 will run events at 100 so it is more intuitive to manage.
Exception: (TypeError('acts() takes exactly 3 arguments (1 given)',), '<Process(request_room) object at 0x136bbfb0>')
I have issues with next day atm, so if there are any changes, I cannot see them anyway.Code: [Select]File "game/library/screens/next_day.rpy", line 120, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 120, in script call
call next_day_controls
File "game/library/screens/next_day.rpy", line 107, in script call
call next_day_calculations
File "game/library/screens/next_day.rpy", line 168, in script
$ building.run_nd()
File "game/library/screens/next_day.rpy", line 168, in <module>
$ building.run_nd()
File "game/library/businesses&buildings/classes - core_buildings.rpy", line 510, in run_nd
self.env.run(until=101) # 101 will run events at 100 so it is more intuitive to manage.
Exception: (TypeError('acts() takes exactly 3 arguments (1 given)',), '<Process(request_room) object at 0x136bbfb0>')
1) We have several issues on the repo related to jobs, don't forget about them.
2) Per building log seems logical enough. However, we could use sorting by business inside it. Like, watch only cafe related parts.
2) Aside from it, currently it's not easy to watch over your business because you have to browse through all personal events at once.
Reading reports about characters activities during next turn may be fun, but it should be optional. There should be a place where all important events will be visible at once. Such as being attacked, leveling up, having no job without a reason, etc.
You report about them via so called red flags, encouraging players to look at personal reports to find out what's wrong. But often it means browsing through many dozens if not hundreds pages to find out what's wrong.
Maybe it should be possible to hide all unimportant personal reports, leaving only red flags.
This is incredibly time consuming to implement but I will be moving logs to their own classes that may allow stuff like this.If only we could simply look at red flags without dozens unimportant events, it already would be insanely useful. But...
Should already be possible, maybe buttons are disabled....I tried everything, I don't see a way to do it.
self.days_depressed = 0
This part of char class is probably left from old code? Because I added depression effect not too long ago, and, being an effect, it has its own counter and doesn't need additional ones.
TODO: This is fairly old, I should be able to do better now.
TODO: Naming of methods could be better.
...
And i do Hope Pytfall continues as nothing as well developed currently exists..
Ohh lol your already using spine animations in babe runner.. did spine was added to renpy or you used something else ?
cant
What do you mean by without too much fuss ?
Backgrounds (but i guess with some camera angle you can avoid to make complicated ones... just a sealing/wall/floor/sheats should be easy enough to make)
oops.. its can.. ( hair shoulnd be a problem ) its just atm i havent made the dynamic hair test.. but this can wait.. rigs have problems but it should do..
For the recoloring we might need some tests.. as i recall not everything worked as it should.. i can make masks but more importantly extract lights/shadows from image.. so you can recolor the base body then on top of it theres the lights/shadows for a better result..
more importantly.. can you keep alpha when you recolor ?
She will agree to do more depending on disposition and her traits. But in some cases in can be impossible without the whore class.
This game looks and feels great, loving the RPG aspects, the combat, the dungeon crawler thingy, the sound effects... boy I stumbled upon this game by checking the 8chan forums for Freecities, but this is more my alley! you guys need to announce this game somewhere.
Quick question, I've added the characters that come with a .json file to the /content/chars folder but the others to the /rchars/random... and I see no difference yet on the girls appearing ingame. :/
As incredible promise this game shows, unfortunately I can't say I enjoy it yet due to some gripes.
There are far too many unexplained blocks. For example a girl refuses to use some items that I give to her, even though I've maxed disposition. It's also unclear how to get her to do certain activities, like try new jobs.
There's also a lot of inexplicable game breaking bugs such as crash on save/load.
I am not sure you can continue with an old save :( It depends on the last patch you've installed. It's bound to crash very quickly if it's a none compatible one.