Promiseland

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Ah, google has removed the setting to automatically enable captions but only if they're not autogenerated, cool

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Alright, done some dev stuff today! Nothing complicated or fancy, after re-initializing the default game code to get a clean slate, I went through the settings and tweaked some stuff. In particular I made it so you can have multiple characters, and be connected to those characters on multiple devices, and I set how long a day should be. I'll see how it feels in testing, but right now I'm going with an in-game day being four times shorter than a real-world day, so days last approximately six hours and an hour is about 15 minutes long. My gut feeling is this is an okay balance between not having to wait too long for things and days not whizzing by

There's a bunch of to-dos I've marked in there to research and/or come back to when the game is closer to going live, like setting the server information after a server exists

I'm done doing things for now but later tonight, after dinner and socialling with Lee, I'll look at the MVP list and pick out something to figure out how to implement

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

No one's talking enough about how Pierre is selling you genetically modified seeds to produce sterile plants so you have to keep buying more seeds from him

More like Pierre Monsanto am I right

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Okay, today I have:
-Refined the list of attributes characters should have, and added a data-type to each
-Made it so some of those attributes are automatically attached to character objects when they're created
-Figured out how to install optional contribs and added one that lets me refine the character-creation menu

Later tonight I'll go through that contrib and start customising it

200 days left until the Snowtowniversary

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

In particular I expect to have the text-based game ready to launch on the Snowtowniversary and then start adding graphics and GUI to it. We will see how fast I can go, though

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Iiiii need to come up with the name of the Culacian homeland

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

This morning, Oz peed on my bed again, getting all of the silk blanket and the futon, so that was a good chunk of my day. I hand-washed the blanket and hunt it out in the sun to dry, and I threw the cover and a couple other things in the washing machine. I sprayed the futon with enzyme spray and massaged it in, tomorrow I will wash that cover and put the futon out in the sun

Aside from that, though, I worked on SnowRPG. There is a contrib that will take an ASCII map and, with some extra commands, automatically create that map in your game world, so for half the day I messed around with that, seeing what sorts of things I could do with it before it broke The second half of the day I converted the SnowRPG map grid into a set of ASCII maps and cross-referenced coordinates between them. The code is still unfinished but all of that I got done, and this is what it looks like:

Code: Select all

from evennia.contrib.grid.xyzgrid import xymap_legend

# ---------------------------------------- Keisey
# Snowtown's tourist district

KEISEY = r"""

 + 0 1 2 3 4 5 6 7 8 9

 9   T   H
     |   |          
8 D-# #-#
\ |/
7 N-#-#
\
6 #
|
5 #
\
4 #-#-#
\
3 #
\
2 #-#
/
1 #
\
0 # + 0 1 2 3 4 5 6 7 8 9 """ # T = North Snowtown # D = Downtown # H = Shelton # N = Snowtown South class TransitionToDowntown(xymap_legend.TransitionMapNode): symbol = "D" target_map_xyz = (5, 1, "downtown") class TransitionToShelton(xymap_legend.TransitionMapNode): symbol = "H" target_map_xyz = (1, 1, "shelton") class TransitionToSnowtown_S(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (8, 2, "snowtown south") # extends the default legend LEGEND_KEISEY = {"D": TransitionToDowntown, "H": TransitionToShelton, "N": TransitionToSnowtown_S} # link coordinates to rooms PROTOTYPES_KEISEY = { # node/room prototypes (3, 0): { "key": "Dungeon Entrance", "desc": "To the east, a narrow opening leads into darkness.", }, (4, 1): { "key": "Under the foilage of a giant tree", "desc": "High above the branches of a giant tree blocks out the sunlight. A slide " "leading down from the upper branches ends here.", }, } for key, prot in PROTOTYPES_KEISEY.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_KEISEY = { "zcoord": "keisey", "map": KEISEY, "legend": LEGEND_KEISEY, "prototypes": PROTOTYPES_KEISEY, } # -------------------------------------- Snowtown South # TODO SNOWTOWN_S = r""" + 0 1 2 3 4 5 6 7 8 9 4 A N W
\ \ |
3 T-# #-# D
\ |\ x
2 #-#-# # #-K
\|x| |\ /
1 P-# # # # #
\|\|/
0 # # + 0 1 2 3 4 5 6 7 8 9 """ # K = Keisey # P = Ripton1 # T = Ripton2 # A = Ramsey # D = Downtown1 # N = Downtown2 # W = Downtown3 class TransitionToKeisey(xymap_legend.TransitionMapNode): symbol = "K" target_map_xyz = (2, 7, "keisey") class TransitionToRipton1(xymap_legend.TransitionMapNode): symbol = "P" target_map_xyz = (6, 2, "ripton") class TransitionToRipton2(xymap_legend.TransitionMapNode): symbol = "T" target_map_xyz = (4, 4, "ripton") class TransitionToRamsey(xymap_legend.TransitionMapNode): symbol = "A" target_map_xyz = (2, 1, "ramsey") class TransitionToDowntown1(xymap_legend.TransitionMapNode): symbol = "D" target_map_xyz = (5, 1, "downtown") class TransitionToDowntown2(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (1, 2, "downtown") class TransitionToDowntown3(xymap_legend.TransitionMapNode): symbol = "W" target_map_xyz = (0, 2, "downtown") LEGEND_SNOWTOWN_S = {"K": TransitionToKeisey, "P": TransitionToRipton1, "T": TransitionToRipton2, "A": TransitionToRamsey, "D": TransitionToDowntown1, "N": TransitionToDowntown2, "W": TransitionToDowntown3} # prototypes for specific locations PROTOTYPES_SNOWTOWN_S = { # node/rooms prototype overrides (1, 0): { "key": "The entrance", "desc": "This is the entrance to a small cave leading into the ground. " "Light sifts in from the outside, while cavernous passages disappear " "into darkness.", }, (2, 0): { "key": "A gruesome sight.", "desc": "Something was killed here recently. The smell is unbearable.", }, } for key, prot in PROTOTYPES_SNOWTOWN_S.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_SNOWTOWN_S = { "map": SNOWTOWN_S, "zcoord": "snowtown south", "legend": LEGEND_SNOWTOWN_S, "prototypes": PROTOTYPES_SNOWTOWN_S, "options": {"map_visual_range": 1, "map_mode": "scan"}, } # ---------------------------------------- Ripton # TODO RIPTON = r""" + 0 1 2 3 4 5 6 7 5 A
|
4 #-S
|
3 #
\
2 # # #-#-#-N
x|/ / /
1 # #-# #-#
/ x|/
0 # # # + 0 1 2 3 4 5 6 7 """ # A = Ramsey # S = Snowtown South 1 # N = Snowtown South 2 class TransitionToRamsey(xymap_legend.TransitionMapNode): symbol = "A" target_map_xyz = (2, 1, "ramsey") class TransitionToSnowtown_S1(xymap_legend.TransitionMapNode): symbol = "S" target_map_xyz = (1, 3, "snowtown south") class TransitionToSnowtown_S2(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (3, 1, "snowtown south") # extends the default legend LEGEND_RIPTON = {"A": TransitionToRamsey, "S": TransitionToSnowtown_S1, "N": TransitionToSnowtown_S2} # link coordinates to rooms PROTOTYPES_RIPTON = { # node/room prototypes (3, 0): { "key": "Dungeon Entrance", "desc": "To the east, a narrow opening leads into darkness.", }, (4, 1): { "key": "Under the foilage of a giant tree", "desc": "High above the branches of a giant tree blocks out the sunlight. A slide " "leading down from the upper branches ends here.", }, } for key, prot in PROTOTYPES_RIPTON.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_RIPTON = { "zcoord": "ripton", "map": RIPTON, "legend": LEGEND_RIPTON, "prototypes": PROTOTYPES_RIPTON, } # -------------------------------------- Ramsey # TODO RAMSEY = r""" + 0 1 2 3 4 5 6 7 5 # # #-#-#
| /|/ /|\
4 #-# # # #-#-N
\| / \
3 # # S
/
2 #
| 1 #
|\
0 P T + 0 1 2 3 4 5 6 7 """ # N = North Snowtown 1 # S = North Snowtown 2 # P = Ripton # T = Snowtown South class TransitionToRipton(xymap_legend.TransitionMapNode): symbol = "P" target_map_xyz = (4, 4, "ripton") class TransitionSnowtown_N1(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (1, 4, "north snowtown") class TransitionToSnowtown_N2(xymap_legend.TransitionMapNode): symbol = "S" target_map_xyz = (2, 4, "north snowtown") class TransitionToSnowtown_S(xymap_legend.TransitionMapNode): symbol = "T" target_map_xyz = (1, 3, "south snowtown") LEGEND_RAMSEY = {"P": TransitionToRipton, "N": TransitionToSnowtown_N1, "S": TransitionToSnowtown_N2} # prototypes for specific locations PROTOTYPES_RAMSEY = { # node/rooms prototype overrides (1, 0): { "key": "The entrance", "desc": "This is the entrance to a small cave leading into the ground. " "Light sifts in from the outside, while cavernous passages disappear " "into darkness.", }, (2, 0): { "key": "A gruesome sight.", "desc": "Something was killed here recently. The smell is unbearable.", }, } for key, prot in PROTOTYPES_RAMSEY.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_RAMSEY = { "map": RAMSEY, "zcoord": "ramsey", "legend": LEGEND_RAMSEY, "prototypes": PROTOTYPES_RAMSEY, "options": {"map_visual_range": 1, "map_mode": "scan"}, } # This is read by the parser XYMAP_DATA_LIST = [XYMAP_DATA_RIPTON, XYMAP_DATA_RAMSEY] # ---------------------------------------- Wilmington # TODO WILMINGTON = r""" + 0 1 2 3 4 8 # #
\ / 7 # # #
|\ / \| 6 # # #
|
5 #
\
4 #-#-#
\
3 #
\
2 N #
|/
1 #
|
0 D + 0 1 2 3 4 """ # D = Downtown # N = North Snowtown class TransitionToDowntown(xymap_legend.TransitionMapNode): symbol = "D" target_map_xyz = (4, 4, "downtown") class TransitionToSnowtown_N(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (4, 3, "north snowtown") # extends the default legend LEGEND_WILMINGTON = {"D": TransitionToDowntown, "N": TransitionToSnowtown_N} # link coordinates to rooms PROTOTYPES_WILMINGTON = { # node/room prototypes (3, 0): { "key": "Dungeon Entrance", "desc": "To the east, a narrow opening leads into darkness.", }, (4, 1): { "key": "Under the foilage of a giant tree", "desc": "High above the branches of a giant tree blocks out the sunlight. A slide " "leading down from the upper branches ends here.", }, } for key, prot in PROTOTYPES_WILMINGTON.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_WILMINGTON = { "zcoord": "wilmington", "map": WILMINGTON, "legend": LEGEND_WILMINGTON, "prototypes": PROTOTYPES_WILMINGTON, } # -------------------------------------- Shelton # TODO SHELTON = r""" + 0 1 2 3 4 5 8 #-# #
\ /| 7 # #
/ | 6 # #
/
5 #-#
|x|
4 # #
/ \
3 N #
/
2 S-#
/ \
1 # #
|
0 K + 0 1 2 3 4 5 """ # K = Keisey # N = North Snowtown 1 # S = North Snowtown 2 class TransitionToKeisey(xymap_legend.TransitionMapNode): symbol = "K" target_map_xyz = (3, 8, "keisey") class TransitionToSnowtown_N1(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (6, 3, "north snowtown") class TransitionToSnowtown_N2(xymap_legend.TransitionMapNode): symbol = "S" target_map_xyz = (7, 2, "north snowtown") LEGEND_SHELTON = {"K": TransitionToKeisey, "N": TransitionToSnowtown_N1, "S": TransitionToSnowtown_N2} # prototypes for specific locations PROTOTYPES_SHELTON = { # node/rooms prototype overrides (1, 0): { "key": "The entrance", "desc": "This is the entrance to a small cave leading into the ground. " "Light sifts in from the outside, while cavernous passages disappear " "into darkness.", }, (2, 0): { "key": "A gruesome sight.", "desc": "Something was killed here recently. The smell is unbearable.", }, } for key, prot in PROTOTYPES_SHELTON.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_SHELTON = { "map": SHELTON, "zcoord": "shelton", "legend": LEGEND_SHELTON, "prototypes": PROTOTYPES_SHELTON, "options": {"map_visual_range": 1, "map_mode": "scan"}, } # This is read by the parser XYMAP_DATA_LIST = [XYMAP_DATA_WILMINGTON, XYMAP_DATA_SHELTON] # ---------------------------------------- North Snowtown # TODO SNOWTOWN_N = r""" + 0 1 2 3 4 5 6 7 8 5 A #
\ |
4 M-#-#-#-# H
\ \ \ /
3 # # # #
\ | / \
2 # W # #-L / \ / /
1 D # #-#-K
|
0 T + 0 1 2 3 4 5 6 7 8 """ # K = Keisey # W = Wilmington # A = Ramsey 1 # M = Ramsey 2 # D = Downtown 1 # T = Downtown 2 # H = Shelton 1 # L = Shelton 2 class TransitionToKeisey(xymap_legend.TransitionMapNode): symbol = "K" target_map_xyz = (1, 8, "keisey") class TransitionToWilmington(xymap_legend.TransitionMapNode): symbol = "W" target_map_xyz = (2, 1, "wilmington") class TransitionToRamsey1(xymap_legend.TransitionMapNode): symbol = "A" target_map_xyz = (5, 4, "ramsey") class TransitionToRamsey2(xymap_legend.TransitionMapNode): symbol = "M" target_map_xyz = (6, 4, "ramsey") class TransitionToDowntown1(xymap_legend.TransitionMapNode): symbol = "D" target_map_xyz = (5, 3, "downtown") class TransitionToDowntown2(xymap_legend.TransitionMapNode): symbol = "T" target_map_xyz = (3, 3, "downtown") class TransitionToShelton1(xymap_legend.TransitionMapNode): symbol = "H" target_map_xyz = (1, 4, "shelton") class TransitionToShelton2(xymap_legend.TransitionMapNode): symbol = "L" target_map_xyz = (1, 2, "shelton") # extends the default legend LEGEND_SNOWTOWN_N = {"K": TransitionToCave, "W": TransitionToWilmington, "A": TransitionToRamsey1, "M": TransitionToRamsey2, "D": TransitionToDowntown1, "T": TransitionToDowntown2} # link coordinates to rooms PROTOTYPES_SNOWTOWN_N = { # node/room prototypes (3, 0): { "key": "Dungeon Entrance", "desc": "To the east, a narrow opening leads into darkness.", }, (4, 1): { "key": "Under the foilage of a giant tree", "desc": "High above the branches of a giant tree blocks out the sunlight. A slide " "leading down from the upper branches ends here.", }, } for key, prot in PROTOTYPES_SNOWTOWN_N.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_SNOWTOWN_N = { "zcoord": "north snowtown", "map": SNOWTOWN_N, "legend": LEGEND_SNOWTOWN_N, "prototypes": PROTOTYPES_SNOWTOWN_N, } # ---------------------------------------- Downtown # TODO DOWNTOWN = r""" + 0 1 2 3 4 5 6 5 W
|
4 N # R
| | /
3 #-#-# #-#
\ x \|
2 #-#-# # #
|\ \ |
1 U # T # #-K
x|
0 H # + 0 1 2 3 4 5 6 """ # W = Wilmington # K = Keisey # U = Snowtown South 1 # T = Snowtown South 2 # H = Snowtown South 3 # N = North Snowtown 1 # R = North Snowtown 2 class TransitionToWilmington(xymap_legend.TransitionMapNode): symbol = "W" target_map_xyz = (2, 1, "wilmington") class TransitionToKeisey(xymap_legend.TransitionMapNode): symbol = "K" target_map_xyz = (1, 8, "keisey") class TransitionToSnowtown_S1(xymap_legend.TransitionMapNode): symbol = "U" target_map_xyz = (4, 3, "snowtown south") class TransitionToSnowtown_S2(xymap_legend.TransitionMapNode): symbol = "T" target_map_xyz = (3, 3, "snowtown south") class TransitionToSnowtown_S3(xymap_legend.TransitionMapNode): symbol = "H" target_map_xyz = (4, 2, "snowtown south") class TransitionToSnowtown_N1(xymap_legend.TransitionMapNode): symbol = "N" target_map_xyz = (4, 1, "north snowtown") class TransitionToSnowtown_N2(xymap_legend.TransitionMapNode): symbol = "R" target_map_xyz = (3, 2, "north snowtown") # extends the default legend LEGEND_DOWNTOWN = {"T": TransitionToCave} # link coordinates to rooms PROTOTYPES_DOWNTOWN = { # node/room prototypes (3, 0): { "key": "Dungeon Entrance", "desc": "To the east, a narrow opening leads into darkness.", }, (4, 1): { "key": "Under the foilage of a giant tree", "desc": "High above the branches of a giant tree blocks out the sunlight. A slide " "leading down from the upper branches ends here.", }, } for key, prot in PROTOTYPES_DOWNTOWN.items(): if len(key) == 2: # we don't want to give exits the room typeclass! prot["prototype_parent"] = ROOM_PARENT else: prot["prototype_parent"] = EXIT_PARENT XYMAP_DATA_DOWNTOWN = { "zcoord": "downtown", "map": DOWNTOWN, "legend": LEGEND_DOWNTOWN, "prototypes": PROTOTYPES_DOWNTOWN, }

Web rendering is messing the maps up a bit, but you get the idea. It was a lot of work and kept me at the computer for longer than I'd usually be. Basically what's left is replacing those 'Check out this tree' bits with locations and descriptions of actual rooms instead of the example text. And the upshot of all this is that this program supports pathfinding, which I should be able to hook into NPCs so they can wander around. The goal is to have Oblivion-style NPC routines where they actually go out and do things all day

The downshot is because I've split the map into different sections, the pathfinding won't work between areas, but doing it that way should make it easier to expand the map later if and when I want to do that. I hopefully will be able to pathfind an NPC to an exit node, manually walk them through it, and then pathfind to their destination, if necessary. There is the same problem and hopeful solution with public transportation

Tomorrow I will attempt to feed that code into the contrib and see if it works (cross fingers, touch wood), and then (if it does (cross fingers, touch wood)) I will wander around the city and see how big it "feels"

As for tonight, it's about time for me to go to sleep

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Oh also I saw a lizard! #blessed

It was hanging on the side of the pool to stay cool, because it's been 110+ the past few days, and it let me get close enough to get a pretty okay picture of it

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

Successfully finished that code and got xyzgrid to make all the rooms! I only needed to tweak it like three times to get it to actually run without errors

I've now wandered around the city a bit and I do think it's a good size for starting out, so that is done. I thiiiink my next move should be getting an NPC wandering around

User avatar
Fetian
Posts: 4508
Joined: Sun Jun 26, 2022 7:33 pm
.oO: Look at me, still talking when there's science to do

Re: Promiseland

Unread post by Fetian »

There is a pro-shot of Hadestown playing in theaters right now, so last night Lee and I went to go see it! Before the movie we stopped at a taqueria to get dinner, since he didn't have time to cook and eat between getting home from work and having to be at the theater. I had a torta for the first time and it was pretty good despite having tomatoes on it. There was also a kid there with a halloween home depot bucket which, uh, they sure have started selling those already! What the heck, summer has barely started

August sure is coming on pretty strong, though, we've had 100+ temperatures every day except today, with several in the past couple weeks hitting above 110 (today only hit 99)

Anyway, Hadestown. To start with they have really got to stop cutting the intermissions out of proshots, I know they probably don't want customers wandering around the theater lobby in the middle of the movie but My God it is unreasonable to expect me to sit in your shitty theater chairs for two and a half hours. I am feeling it today

As for the show itself, I won't belabour it but we both had a lot of grievances to air on the way home, which was itself fun. Apparently we were both relieved, coming out of it, that the other of us didn't love it and so we wouldn't have to like, smile and nod about all the bad parts. And that said we neither of us hated it, it's just, um. Not great

There is something, though, that both of the musicals we've gone to recently have been 'not great' and we've gotten to shit on them together the whole way home. We need to go see a good show

 
Meanwhile! Today I have been working on getting the NPC code working and I have done that! I can now make NPCs with a schedule, who will go places and do things of their own will. Right now they will do the same thing every single day and I probably don't need to change that, though I do am going to need to figure out ways to, like -- if a player is on a quest that, eg, makes an NPC go missing, that NPC needs to not exist for that player. Possibly there's like, duplicate NPCs where there's a non-quest-version that goes about its day, and when the player is on a relevant quest that NPC becomes functionally invisible and a quest-version comes into existence.

But either way I have a working NPC routine system. Spiderwebbing off from that I still need to make dialogue systems (that will stop an NPC from walking away while a player is talking to them), and I need to change how the game displays character movement/location because every room having a dozen NPCs all walking into and out of a room so you're spammed with 'NPC arrived from the west. NPC left to the east. NPC arrived from the east. NPC arrived from the east. NPC left to the north' etc would not be great. But it also wouldn't be great to be looking for an NPC and not be able to 'see' their movements. I need to think on the best solution to this, maybe players have a command to turn the arrival/leaving messages on and off depending on if they're trying to find someone

Lemme look at the MVP list, though as I'm doing so I'm realising that NPC routing was not technically on it, oops. I guess now that I think about it it wasn't actually necessary to it

Screenshot_2026-08-05_23-34-25.png

 
On all of these the like, mechanical aspects of it are done but the actual writing for them is not, so like the streets exist but aren't done because they're all just called 'A street in Ripton' and have a description of 'Bla bla bla'.

But there's a character creation menu, and it actually has a pronouns section in it, but it's commented out until I'm sure it's actually necessary. Offhand I don't know that the game narration will ever actually refer to the player character in third person. It does have a 'forms of address' section where you can select like 'Man', 'Lady', 'Sir', 'Person', etc, which honestly will probably be all I need but I feel like I at one point had a trio of cards in the SN version that would fire depending on if a sentence in it needed to be he, she, or they. Anyway, if it does turn out to be necessary I have a chunk of code that will let players type in their own pronouns so it can be whatever the dingus you want, I'm not your dad

Skills and stats all exist but aren't checked or modified anywhere and I'm very likely to unimplement the way I'm currently doing it and initialise them somewhere else, because right now NPCs are also getting them and that seems unnecessary -- they're all initiating at 0 and obviously if I wanted NPCs to have a set of skills they would have to be set to something specific first, unlike players who get a blank slate

Locations all exist but indoor locations don't, and specific buildings don't

I think technically player inventory also already exists because it's built in to evennia by default, but for SnowRPG I will need equipment slots and kinds of inventory and suchlike. Though not for the MVP so maybe I should just go ahead and cross that off the list, after I confirm it does in fact work

Well! Since NPCs exist I think perhaps the next step should be to get them talking. I will work on that tomorrow

You do not have the required permissions to view the files attached to this post.
Post Reply