devolution

Author Topic: General Discussion  (Read 3788427 times)

0 Members and 15 Guests are viewing this topic.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #225 on: February 04, 2013, 03:08:50 AM »
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.

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.
Like what we're doing?

Offline Armegetton

  • Jr. Member
  • **
  • Posts: 85
  • . . . . .
Re: PyTFall Dev Thread: Writers needed!
« Reply #226 on: February 04, 2013, 08:32:37 AM »
If you think that's best, then that sounds good to me. I was just concerned that writers would be confused.

But also, how many clusters of nested if statements are needed if that's done?
It seems like there would be 5 per 5 (5x5) or 25 unique outcomes

1. >120/>120  2. >120/>90 3. >120/>60 4. >120/>30 5. >120/<=30
1. >90/>120  2. >90/>90 3. >90/>60 4. >90/>30 5. >90/<=30
1. >60/>120  2. >60/>90 3. >60/>60 4. >60/>30 5. >60/<=30
1. >30/>120  2. >30/>90 3. >30/>60 4. >30/>30 5. >30/<=30
1. <=30/>120  2. <=30/>90 3. <=30/>60 4. <=30/>30 5. <=30/<=30

But it would need considerably more outcomes if there were 2 or 3 possible traits that you want text for as well. (because it would change to 25x2 or 25x3 for unique responses, unless the trait responses were separate) and I imagine this will be per job. whoring, stripping, waitressing, etc.

Don't get me wrong, I think it would be pretty neat if there were this many possible responses. It would seem more personalized and one would see less of the same ones over and over.


This could be the end ...

Offline dorkosaurus

  • Newbie
  • *
  • Posts: 11
Re: PyTFall Dev Thread: Writers needed!
« Reply #227 on: February 04, 2013, 01:40:27 PM »
what about having the outcome be partitioned off and the writing could be made generic.

Something like

The customer was completely enamored by her stunning looks. <insert section commenting about specific perks>

(section on the act itself) <name> greeted the group of customers and began her dance. She teased the room with her clothes while slowly stripping it away.

Her performance was sloppy and the customer stormed off in anger.


Something like this would allow for a couple of generic phrases for each section and they could be stitched together while still maintaining coherence.

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: PyTFall Dev Thread: Writers needed!
« Reply #228 on: February 04, 2013, 01:57:36 PM »
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.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #229 on: February 04, 2013, 02:43:21 PM »
So who the hell suggested 25x texts per trait and where??? I thought we were talking about combined stat dependencies vs separate stat dependencies?
Like what we're doing?

Offline rudistoned

  • Full Member
  • ***
  • Posts: 229
Re: PyTFall Dev Thread: Writers needed!
« Reply #230 on: February 04, 2013, 05:43:42 PM »
I'd like to comment on the "get a description for a job depending on several conditions" discussion.

Some of you probably know Otherworld. It's main developer, Daisy_Strike, created an XML system from scratch that allows an arbitrary number of conditions to be checked when selecting texts. Usually, it starts with cases that require strict conditions to be met, loosens those up and ends with a text requiring no passed condition at all. I like the concept, but this system is rather complicated to learn, somewhat difficult to read and debug and surely was difficult to code.

A complicated job in Otherworld's XML system looks like this. Please note that this code defines the effects of the job and returns a keyword that defines the description this job should get:
Code: [Select]
<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>


At least one of you knows my own pet project, Pytherworld. Here, job descriptions are also selected via an arbitrary number of checked conditions. These job scripts are implemented as Python functions. Basic Python syntax is at least as easy to learn as Otherworld's XML system, is easier to read and debug and has already been implemented and documented.

A complicated job in Pytherworld looks like this. Again, this code defines the effects of the job and returns a keyword that defines the description this job should get:
Code: [Select]
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"

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"
« Last Edit: February 04, 2013, 05:49:10 PM by rudistoned »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #231 on: February 04, 2013, 09:19:21 PM »
At least one of you knows my own pet project, Pytherworld.

Here, here :)



Both systems are more complicated and more powerful than your current system and both solve the problem you are discussing here.

BS by the way, it isn't more powerful and only maybe more complicated.

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. Otherwise, Girls in OW can have two specializations instead of one, WM version of PytFall might top that, SimBro version is not supposed to by design. OW approach doesn't decrease workload, at best it makes code better readable.

As for power there is not one damn thing you can swing with that approach that cannot be done with strip method of Brothel class, simply because it has/can gain access to every variable in the game and RenPy engine (Remember that single namespace everything runs at?). Powerwise that cannot be beaten, it is as simple as that. I never wanted job texts to be moddable so returning a string: return "whorejobRookieRough" That would in the end determine what text to put on display doesn't make much sense in Pytfall, also I expect that there is a lot less control over the content of those texts in PW than in PytFall.


@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"


As opposed to:

"if chr.happiness > 75:"

and

"chr.mod('fatigue', 2) or chr.fatigue += 2"?

You can add error checking to __setattr__ and __getattr__ and set exceptions, that might be an advantage. There might be a way to solve items issue with this as well...



In any case, I did otherwise manage to adapt WM's approach of House Percentage, creating my first bar in RenPy! :) This is required for free girl's tips/job payout.

« Last Edit: February 04, 2013, 09:41:26 PM by Xela »
Like what we're doing?

Offline Armegetton

  • Jr. Member
  • **
  • Posts: 85
  • . . . . .
Re: PyTFall Dev Thread: Writers needed!
« Reply #232 on: February 04, 2013, 09:43:25 PM »
As far as the 25 needed lines, I took this...

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.

and inferred that you wanted 2 checks in a row to get 1 text, to avoid robotic responses. I then extrapolated the data assuming you wanted 5 levels or degrees of skill, which is where I got 25 from.

If I'm mistaken or misunderstood, I apologize.


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)
This could be the end ...

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #233 on: February 04, 2013, 09:56:05 PM »
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.
Like what we're doing?

Offline dorkosaurus

  • Newbie
  • *
  • Posts: 11
Re: PyTFall Dev Thread: Writers needed!
« Reply #234 on: February 05, 2013, 12:58:57 AM »
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.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #235 on: February 05, 2013, 02:14:57 AM »
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).

Like what we're doing?

Offline dorkosaurus

  • Newbie
  • *
  • Posts: 11
Re: PyTFall Dev Thread: Writers needed!
« Reply #236 on: February 05, 2013, 02:45:11 AM »
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).

you should update the first post with the info when you get around to it, that way people can just check back periodically and post their pastebins when they feel like it.

Offline rudistoned

  • Full Member
  • ***
  • Posts: 229
Re: PyTFall Dev Thread: Writers needed!
« Reply #237 on: February 05, 2013, 03:48:57 AM »
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.

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.

I checked against a single added number because I chose too. However, doing stuff like the following is perfectly possible too. It's just Python code, after all.
Code: [Select]
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 class
Well, what about moddability ;-)
There's also  readability, ease of debugging and maintaining the code, but that's just future me being lazy I suppose.



 
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:

"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).


Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: PyTFall Dev Thread: Writers needed!
« Reply #238 on: February 05, 2013, 06:02:08 AM »
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).

Yeah, not to modify behavior for sGirl class might be a mistake after all. Is it possible to change it only for stats? Like:

def __setattr__(self):
   if stat in self.statslist:
        #One behavior, it should be possible to solve items problem, add error checking and make mod function obsolete with this as well. But:
   else:
        #For all other attributes of the class, default behavior is preferred, I can't tell how to have it jump through hoops this way, if you have the answer, I would appreciate that so I won't have to search net for it.

PS: And I wasn't planning to mess with decorators  :D
       

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.

Had no idea about Social classes. Yeah, paperdoll... that is remarkably easy to achieve with RenPy, I recall there even being a ready to use code for that somewhere but it would be troublesome to create dolls for a few dozens characters planned for original release.

Traits also describe girl's mind and behavior, not just looks. It'll all depend on how much code is written for that.
« Last Edit: February 05, 2013, 06:30:34 AM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: PyTFall Dev Thread: Writers needed!
« Reply #239 on: February 05, 2013, 01:09:22 PM »
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.