Author Topic: General Discussion  (Read 3821737 times)

0 Members and 19 Guests are viewing this topic.

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7500 on: May 13, 2016, 01:53:12 PM »
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...


Wonders of jumpless python again. These lines
Quote
if inv_source == eqtarget:
                                    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!"]))
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")"?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7501 on: May 13, 2016, 02:16:05 PM »
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")"?

You could... there is a comment there that suggests plans to encapsulate that but I can't tell if it's a requirement at the moment. If we do that, call will not be possible. It's a safest best to do it as done here:

Code: [Select]
    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

We can just leave it for bet as well, it's not a big deal.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7502 on: May 13, 2016, 02:32:33 PM »
I know, I wrote those lines. But it's not an option, because I will have to repeat those lines many times due to repeatable checks at multiple screens.

Quote
                                    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!"]))
                                    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..."]))
5 times already, and may be more in the future.
« Last Edit: May 13, 2016, 02:35:10 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7503 on: May 13, 2016, 02:43:24 PM »
Make an issue, I'll setup that code so it can be done once this weekend.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7504 on: May 13, 2016, 04:50:47 PM »
Code: [Select]
                    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)

LoL I love when people leave stuff like that in code :D

From an unfinished Ren'Py game I found called Iris Quest (with Akabur's girl from Princess Trainer). They had a BE similar to ours so I went searching for some decent ideas, there weren't any :(
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7505 on: May 13, 2016, 06:11:18 PM »
That's unfair to genderless creatures with None gender  :)

Completely forgot about blowoff flag not doing a thing for hired chars, now there is an issue for that too.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7506 on: May 13, 2016, 06:14:56 PM »
Yeah, it's very offensive and politically incorrect, that's why I liked it :D

Do you need those flags to work for developing interactions? We're going to review the next day methods anyway before releasing, but if you need it done sooner, let me know.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7507 on: May 13, 2016, 06:42:23 PM »
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.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7508 on: May 13, 2016, 06:49:58 PM »
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.

It's not really an interactions related issue. There are "special" flags that have their own rules. Some of them are cleared automatically at specific circumstances, some are modified during next day automatically and etc. Interactions are using those mechanics simply because it is convenient but it is in no way an interactions specific issue.

==>>
Loads of code in chars next day needs to be updated cause it was created to compensate for code base shortcomings that have long been fixed.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7509 on: May 13, 2016, 07:09:55 PM »
OMG


I love the new battle scenarios in interactions and new sound tracks :D Once all the logical crap is taken care of we need to really abuse all that logic/data in the game to make it interesting.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7510 on: May 14, 2016, 06:05:43 AM »
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  :)

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7511 on: May 14, 2016, 06:16:24 AM »
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  :)

Would not be hard to do at any rate. I wonder how well we can relay this to the player, but technically it's not hard at all.

Edit:
First thing popped into my mind after playing the scenarios, was forcing a change to the general GM picture or removing the chars from the GMCell. That would not be hard to do either and would make a hell load of sense... something along these lines should definitely be a part of future development.
« Last Edit: May 14, 2016, 06:23:10 AM by Xela »
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7512 on: May 14, 2016, 06:51:47 AM »
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  :)

Most games don't seem to give a shit btw. :D Doesn't mean that we shouldn't but it's all about player perception.

===>>
Edit:
I was thinking ("Rest" day today (so maybe bot thinking clearly :D), with barbecue and lots of alcohol to make up for last two (f*cked up) works days of the week :D).

In any any case, how much do we give a sh!t about inconsistencies like that? It happens a lot in greatest titles and players don't notice and don't give a damn. In either case it's not obvious to me if banning spells based off location is a good or a bad idea... even if it takes just one extra property and two lines of code to implement.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #7513 on: May 14, 2016, 08:45:48 AM »
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.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #7514 on: May 14, 2016, 08:57:08 AM »
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.

Really? I recall using some really intense magic when a dragon randomly attacked a town and noone seemed to mind... we don't really hit any civs in BE scenarios in PyTFall.

I mean even if something along those lines happens (it's all code/logic related), more often than not it's all about intent and even more so about how well you can relay that intent towards the player...

It's simple to setup logically as I've said, so the question remains if we should. Most of our spells are using just the one method to take care of logic like that.
Like what we're doing?