devolution

Author Topic: <-- Archived -->  (Read 22921 times)

0 Members and 1 Guest are viewing this topic.

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #30 on: May 28, 2013, 10:10:07 AM »
Well, we could use several levels of detalisation, if you want to. The more matrons you have, the more details you could see at next day screen.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #31 on: May 28, 2013, 10:17:26 AM »
Well, we could use several levels of detalisation, if you want to. The more matrons you have, the more details you could see at next day screen.

LoL

On an off chance that wasn't a joke: it's an overkill :)
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #32 on: May 28, 2013, 10:36:48 AM »
 I propose several, let's call it, screens, every of which could be turn on and off anytime.
1. Job's efficiency. How well girls do their job, how customers like it, where and how girls spend their free time etc. I mean all those texts the game shows now at every turn.
2. Important events. Customers attacks, gaining/losing traits, death, low health, etc.
3. Stats.
4. Battle. When we'll have arena and dungeons, results of fights and dungeon crawling will be here.

You could add more tweaks if you want to: which stats to show, which jobs to show, which events to show.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #33 on: May 28, 2013, 10:43:32 AM »
I propose several, let's call it, screens, every of which could be turn on and off anytime.
1. Job's efficiency. How well girls do their job, how customers like it, where and how girls spend their free time etc. I mean all those texts the game shows now at every turn.
2. Important events. Customers attacks, gaining/losing traits, death, low health, etc.
3. Stats.
4. Battle. When we'll have arena and dungeons, results of fights and dungeon crawling will be here.

You could add more tweaks if you want to: which stats to show, which jobs to show, which events to show.

Battle is a report like any other so it is 1. not 4.

Important events... yeah maybe, I'll have to take another look at jobs code (they are already huge and prolly have to become even bigger).

Stats, well having a separate stat window showing what's up if there is a manager in the building is a good idea. So that we should add to the next day screen concept when we get around to it.



==========================================
Otherwise: I am pleased to say that guard job has been partially debugged and there are already some results :)
« Last Edit: May 28, 2013, 10:57:19 AM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #34 on: May 28, 2013, 12:33:15 PM »
Battle is a report like any other so it is 1. not 4.
Ok, then let's call it a trophies screen. When your girls have found some items or captured a monster girl, you would know about it immediately.
« Last Edit: May 28, 2013, 12:35:53 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #35 on: May 28, 2013, 01:02:59 PM »
Ok, then let's call it a trophies screen. When your girls have found some items or captured a monster girl, you would know about it immediately.

Ok, I'll try to remember it for when I design the Next day screen.


=====================================================
Actually managed to do some coding today:

- Wrapped a message screen that can be used throughout the game in screen command cycle. Game will now throw warnings if player tries to use brothel area effect consumable on a character that is not in any brothel, when player tries to get no-warrior class girl to do guard-duty and old warning when players tries to send slave to do warrior class. Guard job will never appear to slaves.

- Fixed some bugs in guard code.

- Did some bugfixes here and there.
« Last Edit: May 28, 2013, 03:24:28 PM by Xela »
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #36 on: June 01, 2013, 10:29:22 AM »
Ok guys, stay sharp :)

While clearing out bad/outdated code/adding small features and so on, we need to stay on top of writing out concepts:

I'll summarize what's done on jobs front already:

We currently have 5 jobs:

- Whore (with 4 sec acts)
- Stripper
- Service girl (generalization, takes care of bar tending, waitressing and cleaner)
- Rest
- Guard (More of an interception of bad events during other jobs than an actual job in it's own right (codewise))


I'll explain how jobs currently work:

Whore:

1) Refusals:
- If girl is to tired (should be max fatigue - 20)
- If girl is to badly injured (health below 60)
- Client caste/girls rank mismatch (if they are 3 levels apart)

Notes here:
Slaves do not refuse but get a -3 joy penalty instead. Clients will reject any low level whore and free girls will reject deadbeat clients.

- Wrong occupation:

Slaves will always obey.
Free girls will who are not prostitutes will tell you to f$ck off and -50 disposition penalty.
Last, if any free girl's disposition is above 900, she will do the job BUT there will still be a disposition penalty between 10 and 20 point.

2) Acts

- First price is decided, currently it is assumed that costumers have unlimited gold.
- Price is modded on basis of costumer satisfaction created while they're watching strippers perform. System work but I will improve it and make it more intuitive and easier to understand.

3) Event interactions:

...Currently only guard event:

If there are guards:

- It's activated on pure chance but I'll improve that in the future (need ideas here).
- There can be only 3 attacks per day in order not to make it absurdly repetitive.
- All guards respond to any event.
- If hero's current location is brothel, he is added to the defense team as well.
- Battle stats of your party are compared to battle stats of the aggressor.
- If aggressor is overwhelmed, fight does not occur. He/She will pay you off handsomely for the trouble and leave peacefully. This may cost 0 or 1 AP to every party member and very small chance to improve stats.
Otherwise:
- Battle occurs, there are currently 3 possible outcomes for our simplified battle-function
1) Victory
If costumer looses, payoff so you wouldn't take things to far (as handing him/her to the authorities) is really good. There is 20% chance that she/he is out of money, in that case you just give him to local law (I could add options for this in the future, like kill/law/torture etc.)
2) Defeat
Decent penalties to health, fatigue, mp and -2AP for your team as well as small chance to improve battlestats.
3) Overwhelming defeat
Same thing but costumer also slaps your girl (prostitute) a little bit and a far worse hits on health, fatigue, mp and -3 AP. Also no chance of learning anything at all.


If there are no guards:

- ["Broken Will", "Shy", "Meek", "Nerd", "Kind", "Mind Fucked"]
Will take a bad beating, not resisting at all.

- ['Fighter', 'Assasin', 'Fearless', 'Aggressive', 'Tsundere', 'Malicious', "Strong"]
Oversimplified brawl (not even a real fight) occurs.
Win or loose with favorable/bad consequences.

- ["Abnormally Large Boobs", "Big Boobs", "Elegant", "Long Legs", "Great Arse", "Sexy Air", "Great Figure"]
80% chance to seduce the costumer and go business as usual, otherwise get beaten/raped.

- ["Smart", "Genius"]
50% chance to go business as usual.

Otherwise she screams but still takes the beating (large disposition penalty btw).


4) Acts:
- Sex
- Anal
- BJ
- Lesbian (25% chance for female client)

Game checks for relevant sex stat and charisma here. Rewards accordingly, chances to learn stuff and I think I may have forgot to mod brothels fame and reputation.

==============================================
Strip Job:

1) Refusals similar to whore job.

2) Extra check, Whore job takes 1 AP, Strip show 3. If she has less than 3, she either goes out in the club to entertain the crowd or practices her skillz.

3) Clients came to see the girl strip are calculated, always assumes that there are a couple just by default, otherwise it's all about fame.

4) Relays, meant to relay how pleased costumers are and how much will the drink/eat in the bar/club. Game assumes it is possible for any one client to eat and drink for a long time so number of costumers that goes through acts in bar/club can be much greater that total costumers came to the brothel (if it doesn't work like that yet, it will soon)

5) Strip and charisma are checked for different bonuses.


===========================
I'll write the rest later, gtg now..

But Ideas are welcome, always!
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #37 on: June 01, 2013, 11:15:08 AM »
Well, unlimited gold is odd. Why randomise bankruptcy after victory if you might as well randomise his/her gold at the very beginning?
As for other options after victory, without random girls we cannot use the most amusing ones: taking his wife/daughter in brothel as a random girl, or if customer is female, take herself.
So I'd say let's wait until rg system will be ready.

- All guards respond to any event.
It could be randomised as well. Unless you have 2-3 upgrades for security. In that case either the game choses your party more wisely, or the player can do it.

It's activated on pure chance but I'll improve that in the future
Well, irl it would depend on cry for help, I guess. If the girl is not too overwhelmed (depending on her stats), she calls for help.
If she is unable to do it, it depends on the frequency of patrols (aka number of guards in the building) and attentiveness of other girls (but in these cases there is a possibility that you too late for actual protection, she already will be beaten, raped, etc). When we'll have a system of relations between girls, attentiveness will be easier to implement.

Acts:
- Sex
- Anal
- BJ
- Lesbian
Group and bdsm are welcomed  :)

Offline rudistoned

  • Full Member
  • ***
  • Posts: 229
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #38 on: June 01, 2013, 12:12:31 PM »
Not sure if this is the right place to talk about it, but here it goes...

Jobs should be implemented as classes, not methods of Brothel.

Why?
Debugging: Fully testing a method that is as complex as the current jobs is very difficult. Even if we don't care about testing, some codepaths will be very rare and only act under specific circumstances. Bugs in those paths will be hard to find and hard to recreate.

Readability: The current implementation is hard to read, making it harder for new developers, or current developers revisiting their code, to understand, modify and improve upon it. Furthermore, if you want to improve only a certain aspect of the code, you always have to read code that is not involved in the aspect you are working on currently.

Style: AFAIK, a python method should perform a task that can be reasonably describted in a single sentence, preferably of 72 characters or less.


If jobs were classes, we could split up the logic into several methods of the class, making the code easier to read, debug, maintain and improve upon.

Here is an incomplete draft of a class for the whore job that might give you an idea how such a class could look like.
Code: [Select]
    class WhoreJob(object):
        def __init__(self, girl, brothel):       
            self.girl = girl
            self.brothel = brothel
           
        def do(self, client):
            '''Performs the job.
            '''
            girl = self.girl
            evt = JobEvent(self.brothel.id, self.girl)
            slave = girl.status == 'slave'
            prostitute = girl.occupation == 'Prostitute'
            stripper = girl.occupation == 'Stripper'
           
            ######### Refusals #########
           
            if girl.health < 60: # Injured
                evt = self.injured()
            elif girl.fatigue > 260: # To Tired 
                evt = self.tired()
            elif girl.rank < client.rank - 2: # Caste\Rank missmatches
                evt = self.girl_rank_to_low()
            elif client.rank < girl.rank - 2 and not slave:
                evt = self.client_rank_to_low()
            elif not prostitute and girl.disposition < 900: # girl is no prostitute
                evt = self.no_prostitute()
            return evt
               
            ######### Modifiers #########   
            # slave girl serves client of low rank
            if client.rank < girl.rank - 2 and slave:
                girl.joy -= 3
            # no prostitute...
            if not prostitute:
                # ...but slave   
                if slave:
                    evt.txt += "Being a slave, she had no choice but to sell her body even if it isn't in her job description. \n"
                # ...no slave girl, but respects you to much to refuse
                elif girl.disposition > 900:
                    evt.txt += "She isn't thrilled about surrendering herself to some stranger but she respects you to much to refuse. \n "
                    evt.txt += "Reluctently and with protest she does as she's told... \n "
                    girl.disposition -= random.randint(10, 20)
            return evt 

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #39 on: June 01, 2013, 01:25:35 PM »
Well, unlimited gold is odd. Why randomise bankruptcy after victory if you might as well randomise his/her gold at the very beginning?

That's temporary. I am only now really making the game, previously it was just prototyping the code.


As for other options after victory, without random girls we cannot use the most amusing ones: taking his wife/daughter in brothel as a random girl, or if customer is female, take herself.

That will never be implemented. Enslaving a free person will be this easy...

Maybe after we have rg, we can have his wife/client work in the brothel for a week or two.

It could be randomised as well. Unless you have 2-3 upgrades for security. In that case either the game choses your party more wisely, or the player can do it.
Well, irl it would depend on cry for help, I guess. If the girl is not too overwhelmed (depending on her stats), she calls for help.
If she is unable to do it, it depends on the frequency of patrols (aka number of guards in the building) and attentiveness of other girls (but in these cases there is a possibility that you too late for actual protection, she already will be beaten, raped, etc). When we'll have a system of relations between girls, attentiveness will be easier to implement.

We can leave a couple of guards out of the defense team if there are more than 3 than. Rest is an overkill.

Group and bdsm are welcomed  :)

We can add more acts/jobs...
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #40 on: June 01, 2013, 01:38:03 PM »
That will never be implemented. Enslaving a free person will be this easy...

Maybe after we have rg, we can have his wife/client work in the brothel for a week or two.
Who said about enslaving?
As I mentioned before, dungeon and enslavement are different things. You could either break or persuade them in these two weeks, so they will continue to work for you.

We can add more acts/jobs...
We could also make them available for slaves only (when we'll have a training system for them).

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #41 on: June 01, 2013, 02:44:03 PM »
Not sure if this is the right place to talk about it, but here it goes...

Jobs should be implemented as classes, not methods of Brothel.

Why?
Debugging: Fully testing a method that is as complex as the current jobs is very difficult. Even if we don't care about testing, some codepaths will be very rare and only act under specific circumstances. Bugs in those paths will be hard to find and hard to recreate.

Readability: The current implementation is hard to read, making it harder for new developers, or current developers revisiting their code, to understand, modify and improve upon it. Furthermore, if you want to improve only a certain aspect of the code, you always have to read code that is not involved in the aspect you are working on currently.

Style: AFAIK, a python method should perform a task that can be reasonably describted in a single sentence, preferably of 72 characters or less.


If jobs were classes, we could split up the logic into several methods of the class, making the code easier to read, debug, maintain and improve upon.

Here is an incomplete draft of a class for the whore job that might give you an idea how such a class could look like.
Code: [Select]
    class WhoreJob(object):
        def __init__(self, girl, brothel):       
            self.girl = girl
            self.brothel = brothel
           
        def do(self, client):
            '''Performs the job.
            '''
            girl = self.girl
            evt = JobEvent(self.brothel.id, self.girl)
            slave = girl.status == 'slave'
            prostitute = girl.occupation == 'Prostitute'
            stripper = girl.occupation == 'Stripper'
           
            ######### Refusals #########
           
            if girl.health < 60: # Injured
                evt = self.injured()
            elif girl.fatigue > 260: # To Tired 
                evt = self.tired()
            elif girl.rank < client.rank - 2: # Caste\Rank missmatches
                evt = self.girl_rank_to_low()
            elif client.rank < girl.rank - 2 and not slave:
                evt = self.client_rank_to_low()
            elif not prostitute and girl.disposition < 900: # girl is no prostitute
                evt = self.no_prostitute()
            return evt
               
            ######### Modifiers #########   
            # slave girl serves client of low rank
            if client.rank < girl.rank - 2 and slave:
                girl.joy -= 3
            # no prostitute...
            if not prostitute:
                # ...but slave   
                if slave:
                    evt.txt += "Being a slave, she had no choice but to sell her body even if it isn't in her job description. \n"
                # ...no slave girl, but respects you to much to refuse
                elif girl.disposition > 900:
                    evt.txt += "She isn't thrilled about surrendering herself to some stranger but she respects you to much to refuse. \n "
                    evt.txt += "Reluctently and with protest she does as she's told... \n "
                    girl.disposition -= random.randint(10, 20)
            return evt 

That would make sense, I'll think about it.


Who said about enslaving?
As I mentioned before, dungeon and enslavement are different things. You could either break or persuade them in these two weeks, so they will continue to work for you.

Fair enough...

We could also make them available for slaves only (when we'll have a training system for them).

Wouldn't make much sense. I'm stuck debugging, so other jobs descriptions would have to wait...



Anyone got any more ideas for the jobs I've described? Like traits/items modifiers, what stats they should increase and so on?
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #42 on: June 01, 2013, 04:03:59 PM »
Well, these acts are rather exotic, so we could assume that they are forbidden for females by religion, morality, aliens, etc., except for slaves. This way slaves will be much more valuable for player and for the game world.
If you dislike the idea, just add them as an usual sex skills. For example, in wm there is a chance of appearance of a group of customers, and if they want to fight, they fight as a group too (at least in wm ex).

Anyone got any more ideas for the jobs I've described? Like traits/items modifiers, what stats they should increase and so on?
If a whore has a small weapon, she has better chances to defend herself. Probably. Otherwise, why use it in a first place?

And not just a whore, but any girl which could be attacked. Strippers probably couldn't, since they are mostly in plain sight, but service girls could be.

Price could be based not on strippers perform only, but on whore's traits like long legs, boobs, etc. as well. Or maybe you could add preferences system for customers. Anyway, I propose to take into consideration the appearance of whoring girls somehow. And fame too, if you didn't do it already.

Same for security. Fighters with high fame should be more threatening. Their fame could rise after victories and vice versa.
« Last Edit: June 01, 2013, 04:11:59 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #43 on: June 01, 2013, 04:45:25 PM »
Well, these acts are rather exotic, so we could assume that they are forbidden for females by religion, morality, aliens, etc., except for slaves. This way slaves will be much more valuable for player and for the game world.
If you dislike the idea, just add them as an usual sex skills. For example, in wm there is a chance of appearance of a group of customers, and if they want to fight, they fight as a group too (at least in wm ex).

Group fights are already there in bar and will be there in the club as well in the future.

If a whore has a small weapon, she has better chances to defend herself. Probably. Otherwise, why use it in a first place?

And not just a whore, but any girl which could be attacked. Strippers probably couldn't, since they are mostly in plain sight, but service girls could be.

Good call, that's a great idea. We should also do a penalty if large weapon is equipped. Small weapon will five extra chance of an event not happening if client gets scared of the hidden weapon (small).

Price could be based not on strippers perform only, but on whore's traits like long legs, boobs, etc. as well. Or maybe you could add preferences system for customers. Anyway, I propose to take into consideration the appearance of whoring girls somehow. And fame too, if you didn't do it already.

Same for security. Fighters with high fame should be more threatening. Their fame could rise after victories and vice versa.

Ok, I'll try to think on it. Fame for guards will be factored in, I like that. Strippers don't get payed in that way, they are costumer magnets for bar/club tasks. Everyone should get bonuses for fame, I think only strippers get that now.



==================
Didn't get any work done on the jobs cause we're still restructuring the code to be more meaningful to the new coders. Going to get some sleep.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4736
Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
« Reply #44 on: June 02, 2013, 02:42:41 AM »
One more thing is small weapon's stats. The game already has cheap and crappy ones and expensive and quality ones.
If there will be no difference for non warriors between them, why pay more?

Strippers don't get payed in that way, they are costumer magnets for bar/club tasks.
I know. I mean whores prices.
« Last Edit: June 02, 2013, 02:45:06 AM by DarkTl »