Mod Ren'Py Abandoned Time For Dragons - Defiler Wings: Deranged Dragon Mod [29-07-2020] [Jman]

3.50 star(s) 8 Votes
Aug 18, 2020
85
10
So, I am looking around the code tat sounds like the stuff like you mentioned, specifically rooms.yaml and minions.yaml, and they both have different formats and they have no markers to add, they seem like evolutions.yaml probably for obvious reasons. Is there a guide you can point me toward on how to make a dictionary in renpy? Having looked at two already, they tell me what they do but not what they are named or what file they use, or where they are stored. Another thing about the code, when you say "Classes don't just spring out of the aether, you know" what do those other code pieces that I copied off of and edited do, if not something like that? How else do I generate a new class of prototypes if not by that?

My intended outcome by setting this up would be to lock certain evolutions behind events, like only being able to get a song like a siren after defeating the triton castle and capturing the siren within. Or only being able to get advanced frost evolutions after killing and absorbing the essence of a Jotun. Stuff like that to make evolutions more powerful, but still balanced as all the most powerful ones would be locked behind certain conquests.

EDIT: I have figured out a new piece of code that relates to making a dictionary, the " room_raw = dict_from_config_file('db/rooms.yaml')" and I have edited my own version and made a new .yaml to go with it. I have no idea how that single line of code reads an entire ass detailed description of a room, but it does? I'll attach what I have done so far, two files, and like, 4 strings of code only. But progress is progress! Is there anything else I should do to get this to work? Another file to mess with or create?
 
Last edited:

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Is there a guide you can point me toward on how to make a dictionary in renpy?
Code:
        room_prototypes = {}
:D

How else do I generate a new class of prototypes if not by that?
Do you actually need a prototype class? What are these prototypes supposed to do?

My intended outcome by setting this up would be to lock certain evolutions behind events, like only being able to get a song like a siren after defeating the triton castle and capturing the siren within.
Then the easiest solution is to just add another line to evolutions.yaml, like this:
Code:
special_Song_of_the_Siren:
  ...
  unlock: triton_defeated
And put in checks at the relevant evolution/mutation/anatomy displays, like this:
Code:
                for entry in dragon.anatomy['special']:
                    if entry.has_key('unlock') and history.event(entry['unlock']):
                        ...
And then manually insert these 'history.flag('unlock_event_name_change_me')' into appropriate encounters.

I'll attach what I have done so far...
You're still using the non-existent Evolution class. :p Otherwise, better, if a bit clumsy. (y)
 
Aug 18, 2020
85
10
Not sure how you pick out images, but I saw this on rule34.xxx and I think it would fit for a failed thief session where the dragon wakes up. By inquisitorspurius by the way
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Good find! Rule 34 has been my goto source for a while. Hadn't spotted this, probably because it looks a little bland. But in hindsight, you can't be too picky about dragon pics. :) Will be added, together with two others from inquisitorspurius.
 
Aug 18, 2020
85
10
For the evolution locking thing: I feel I would somehow miss out on some things if I used that simplified method, not being able to add descriptions to the essences absorbed and all. My final plan for this thing would be to add a menu that shows the acquired esssences, like the tab that shows resistances and the tab that shows active effects when you click on your dragon portrait. I kinda want to write descriptions and all. The essences would unlock locked evolutions like the aformentioned Siren Song fear increasing evolution. The easiest way to do that and be able to add a menu in as I understand, is to copy what has been done in evolutions.yal and minions.yaml to create an easily moddable area to add descriptions and new items for laypeople like I to add our own stuff. I think I have a handle enough on it to try playtesting this, if I get one more piece of information: is there a place where history.flag(s) or their precursors are stored?
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
I feel I would somehow miss out on some things if I used that simplified method, not being able to add descriptions to the essences absorbed and all.

My final plan for this thing would be to add a menu that shows the acquired esssences, like the tab that shows resistances and the tab that shows active effects when you click on your dragon portrait.
These can be done by
  • Adding the descriptions to evolutions.yaml, again. 'unlock_description', 'pre_unlock_description_25_percent', '1_essence_for_unlocking', etc. Maybe an 'essence_counter' you can change during play.
  • Adding a tab and using 'history.event(entry['unlock'])' to check what should be displayed, and then showing 'history.event(entry['unlock_description'])'.
Unless you want to add more events outside the evolution unlocks themselves, it should work fine.

I get one more piece of information: is there a place where history.flag(s) or their precursors are stored?
Not sure what you're asking, but look at the Event and History classes in 'story_and_events.rpy'.
 

zzczys

Active Member
Jul 20, 2019
911
186
Cave in the mountains, cave in the forest, are they both the same lair? Perhaps the forest one could be a druid's barrow instead?
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
They're the same. One cave is much like another. Well, unless it's an Ogre cave. :D

Druids don't live in barrows. Wights and revenants do. :) I think they might live in the trees, like all the other Alves. Or maybe they just roam around and sleep on the ground, like people who've had too much survival training during national service. :p

Basically, the Tree of Life is the druids' 'barrow'.
 

zzczys

Active Member
Jul 20, 2019
911
186
'Barrow' is the term used in some fantasy games like warcraft. Maybe reduce cave encounters to just 1 like forgotten temple? Running into the same cave repeatedly is a tad annoying, maybe should code in a fury gain for each repeat :ROFLMAO:
 

Gantithoren

Member
Aug 25, 2020
101
51
Oh, hey. Got an event with some Alves doing a demon ritual, it mentioned the fact that this was odd as an Alveish woman was a really precious treasure, I crashed the sacrifice, won the fight... and got a peasant. Had the same event happen again later, with the same 'reward'. I'm using the build on the front page, so Idunno if this is something you've got fixed in your personal one or not, but it strikes me as something worth noting.
 

zzczys

Active Member
Jul 20, 2019
911
186
Found it.

It is, but that fix isn't released yet.


No, should be like this:
Code:
label summon:
    hide bg
    nvl clear
    show expression random_place_bg("sacrifice") as bg
    python:
        music('summon.mp3')
        sacrifice_level = random.randint(0, min(kingdom.fear,dragon.reputation_level) )

        if sacrifice_level > 5: sacrifice_level = random.randint(4, 5)

        if sacrifice_level == 1:
            girl = Girl(origin = 'peasant')        
        elif sacrifice_level == 2:
            girl = Girl(origin = select(['citizen','holy']))
        elif sacrifice_level == 3:
            girl = Girl(origin = 'princess')
        elif sacrifice_level == 4:
            girl = Girl(origin = 'alv')
        elif sacrifice_level == 5:
            girl = Girl(origin = 'heaven')
        else:
            girl = Girl(origin = select(['peasant','citizen','holy']))
             
        if sacrifice_level <= 1:
            enemy_party = ['dark_novice']
            enemy_list = ['dark_novice']
            dtxt = pn('summon','tier1')
Indents matter in Python.
Make the corrections in Time_for_Dragons-1.1.1-pc-DDM\game\_story\events summon.rpy
 

zzczys

Active Member
Jul 20, 2019
911
186
It's random. If the thieves get to you too fast, i.e. they're too low-leveled, they have a chance to give up. OTOH, that chance is never below 50%, so you just got unlucky.
I mean they became florists, so thinking of how to get them to not get lost in the lair. :)
 
Aug 18, 2020
85
10
Sorry about the deleted message, I aint good at reading and just repeated info, not adding anything

On a different note, I am soon going to attempt a playtest of the code I want to add on a fresh game copy. But I still need to know one thing: Is there a single file or place that contains the gui for the stuff that appears when yo click on the dragon's portrait, like there was with adding evolution tabs and lair - screen.rpy?
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Running into the same cave repeatedly is a tad annoying, maybe should code in a fury gain for each repeat
Good idea, done. :devilish:

There will also be event deterioration, so the more you run into any one event, even if you skip it, the less chance it has to show up again.

'Barrow' is the term used in some fantasy games like warcraft.
Warcraft takes a lot of liberties with it's lore. And these are Night Elves who reside in there, going so far as to actually hibernate inside, and using these as hideouts during a war with an invading army of demons. Not exactly normal druid behaviour, and one where barrow actually might be the right term.

Maybe reduce cave encounters to just 1 like forgotten temple?
To one what? Caves are everywhere, that's what they're all about.

I mean they became florists, so thinking of how to get them to not get lost in the lair.
Ah, not giving up but getting lost. Live somewhere accessible, like a cave. :D Or a ruin, grotto, manor or fort.

I'll give the Thief a chance not to become a florist. :)

Is there a single file or place that contains the gui for the stuff that appears when yo click on the dragon's portrait
Yes, 'screen hero_profile' in 'heroes_and_parties.rpy'.
 

zzczys

Active Member
Jul 20, 2019
911
186
Ah, not giving up but getting lost. Live somewhere accessible, like a cave. :D Or a ruin, grotto, manor or fort.
When i lived in a grotto, the idiot did not roll the get swim ability for some reason. I moved to a cave since and had 3 getting lost. Hence why I suggested a lair right on the roads :ROFLMAO:
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
A Thief cannot get lost while invading a cave:
Code:
    if hasattr(lair,'inaccessibility'):
        if thief.level//10 + random.randint(1,3) < lair.inaccessibility*2:
Code:
[config]
rus_name = TODO
eng_name = Large Cave
...
inaccessibility = 0
Are you sure you haven't modified anything there? Otherwise, this can only happen to thieves with negative levels. Those deserve to get lost. :D
 

zzczys

Active Member
Jul 20, 2019
911
186
They each gave up once to prepare better, maybe thats why.

No I did not change anything there. If anything I want to make them come faster lol
 
Last edited:
Aug 18, 2020
85
10
So, I am having a tad of trouble figuring out how to define a name? I tried fixing my files to better match each other, solved a few tab indentation errors, but I am currently stuck on how to define this:

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/_story/hunt/plains.rpy", line 225, in script
    $evolution_prototypes['Testing_Essence'].unlocked = true
  File "game/_story/hunt/plains.rpy", line 225, in <module>
    $evolution_prototypes['Testing_Essence'].unlocked = true
NameError: name 'evolution_prototypes' is not defined

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/_story/hunt/plains.rpy", line 225, in script
    $evolution_prototypes['Testing_Essence'].unlocked = true
  File "C:\Users\?\Downloads\Jarcshehes\Hiding Folder\Temporsry\Fresh File\Testing\renpy\ast.py", line 900, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\Users\?\Downloads\Jarcshehes\Hiding Folder\Temporsry\Fresh File\Testing\renpy\python.py", line 1930, in py_exec_bytecode
    exec bytecode in globals, locals
  File "game/_story/hunt/plains.rpy", line 225, in <module>
    $evolution_prototypes['Testing_Essence'].unlocked = true
NameError: name 'evolution_prototypes' is not defined

Windows-8-6.2.9200
Ren'Py 7.2.2.491
Время для Драконов: Королевство Монстров 29-07-20
Tue Sep 01 19:29:14 2020
Included are my evolock.yaml file and the a bit of documentation on what I have done, updated on things that worked till I got stumped. Personally, I put the added code of when to unlock the Testing_Essence in the mushroom plains event, but it should work anywhere
 
3.50 star(s) 8 Votes