All times shown according to UTC.

Time Nick Message
00:25 Volund progress ![…]ctions/
00:27 still needed:
00:27 FactionManagerScript (global script), lockfuncs, commands/interface
00:27 none of which should be difficult
00:30 finishing zones will be easy
00:30 I decided to do Factions and Zones in the same contrib.
01:43 chasonchaffin joined #evennia
01:45 chasonchaffin hello! I just started messing around with Evennia at the request of a friend who wants some help coding their game. I've been messing around with the custom gametime and I had a question: is it possible to fast forward, rewind, or pause the game time?
02:08 Volund uhhhhhh
02:08 I've never actually looked at that module. I would assume so but...
02:08 lessee
02:10 it looks like it is technicaly possible but there is currently no interface for doing so
02:10 check out evennia/utils/
02:11 though there's also a contrib/custom_gametime I see
02:11 hrm
02:11 they look eerily similar
02:11 I wonder what the story is there
02:12 well
02:12 it's not like a game time system is that difficult to code wholesale either.
02:45 chasonchaffin joined #evennia
02:55 Volund huzzahluia
03:19 mwahahaa
03:19 I simply stuck the OptionHandler on the Factions
03:19 and it's working amazingly
03:19 now Factions can have a configurable color among other things
03:46 chasonchaffin joined #evennia
03:50 evdemo [Public] bobbob just connected to the Evennia demo for the first time!
03:50 [Public] bobbob disconnected from the Evennia demo.
03:53 DiscordBot <Trayes> Anyone around that can answer questions?
03:53 <Reilena> depends on the question!
03:54 Volund yo
03:54 I'm around for a little bit more
03:54 DiscordBot <Trayes> So I am building a mech game and I have people enter mechs to pilot them. The problem is that if I try to target someone or look around, I cant find them. The reason why is that I am INSIDE the mech. Is there a way to make it so that the commands while inside the mech work as if they were outside the mech?
03:55 <Reilena> You'll probably want them puppeting a mech object rather than moving inside of one.
03:55 <Trayes> things do work while they puppet, but is that the best way to go about that?
03:55 Volund there are certainly ways to do this but
03:57 you're basically going to have to reconsider how your commands are structured. perhaps different commands control the mech from in person. maybe instead of 'look' it's 'scan' or 'view' which makes the MECH look and report the results to you
03:57 OR you could just have them puppet the mech but that causes a lot of weirdness
03:57 DiscordBot <Trayes> Ohh I like that for thematic reasons.
03:57 <Trayes> So I need to make all new commands while inside the mech
03:58 Volund if people will -always- be in mechs, then maybe you could just program it so characters ARE mechs
03:58 DiscordBot <Trayes> Nope. Players move in and out of mechs.
03:58 Volund fair 'nuff
03:58 DiscordBot <Trayes> Thank you for your help
03:58 <Reilena> Sounds like a really cool concept btw
03:59 <Trayes> I would go into it more here but I dont want to spam.
03:59 <Reilena> 'vehicles' are fun.
04:00 <Trayes> Mechs need to go through a startup sequence . This grants them skills that turn on targeting and weapons and whatnot. It looks like this "bug" will lead to a pretty cool feature
04:23 Volund huzzah
04:23 I have Factions displaying properly
04:24 well more or less 'properly'
06:13 chasonchaffin joined #evennia
06:14 evdemo [Public] Awdasea just connected to the Evennia demo for the first time!
06:15 [Public] Awdasea disconnected from the Evennia demo.
06:20 chasonchaffin Volund: Thanks for replying earlier, I was away from my computer so I couldn't respond.
06:24 I had another question. as a working python developer I found the installation instructions a little strange (grabbing evennia via github and installing from a local copy). Is there a reason it is recommended to install that way?
08:05 Griatch chasonchaffin: The main reason is that Evennia's source itself is meant to be read and understood (with a very number of comments), so having the code easily available is useful and recommended. That said, we'll eventually make a pip package as well.
08:37 chasonchaffin ok! That's a very good reason. I guess not everyone using Evennia is going to be reading the source code on GitHub and a local copy is useful. If it helps to note, I installed it from the GitHub repo via pip directly and it works perfectly. :)
08:37 thanks Griatch
08:42 Griatch :)
08:43 chasonchaffin btw loving that this exists -- some of my first coding was MUSHcode back when I was a kid
08:44 Griatch Cool :) I recently had a talk at a PyCon and talked about Evennia; I was surprised at how positive the reception was; a LOT of people have very fond memories of MU*s even though most don't know they still exist.
08:45 I even met a random other person who was indedependently working on a mud client.
08:46 chasonchaffin: You were helping a friend code a game you said? What style of game are you making?
08:46 chasonchaffin MU*s are probably the only MMO games I've been able to get into
08:46 * Griatch is not big on other MMO games either
08:49 chasonchaffin so I started helping him and it has given me the itch to make my own as well. Their game is looking very MUD like, whereas the one I'm making is much more MUSH-ish but I'm planning on using the in-game menus as a way to interact with NPCs
08:53 Griatch I see. Well, if you are a Python dev you should hopefully be able to find your way around relatively easily. Just ask (here or in the forum) if you have any questions or if stuff appears weird.
08:54 chasonchaffin yeah, I've been going through the contrib directory to make sure I don't reinvent the wheel and I'll be taking a closer look at the main codebase soon. Everything is VERY well commented so far, so good job :)
08:55 asg joined #evennia
08:58 Griatch Thanks, spent a lot of effort on docs. There'll always be places that could be better, but it's an ongoing effort.
09:01 chasonchaffin I wonder if there was ever a spec for MUSHcode, it might be fun to reimplement it in Evennia
09:03 Griatch Ah, the age-long question. is Evennia's official policy on this.
09:05 chasonchaffin oh yeah there's definitely good reasons for not including it, especially by default. I've been on many MUSH/MUXes that were brought down by the softcode computations
09:05 I was just thinking it might be fun :)
09:06 Griatch Fair enough! To each their own. :)
09:55 evdemo [Public] hungi just connected to the Evennia demo for the first time!
09:58 [Public] hungi disconnected from the Evennia demo.
11:50 [Public] idius disconnected from the Evennia demo.
12:40 Volund I awaken
12:40 seems I missed chasonchaffin
12:40 fellow MUSHcoder huh? Don't see that every day
12:40 hey Griatch :D I'm still at it!
13:07 Griatch Volund: Great!
13:07 * Griatch is getting sick :(
13:07 Volund threw in some more pull requests. But yeah progress with Factions and Zones is coming along nicely - ewwww. :(
13:07 don't get sick!
13:08 DiscordBot <Chason> I'm here but on Discord now!
13:08 Griatch I'll try to look at them but I feel a 'heavy head' coming on :/
13:08 So need to spend my efforts at work stuff right now
13:08 Hi Chason
13:08 Volund so, the Faction Script (data storage and API) is about 80% complete and looking spiffy. I'm working on the commands right now so I can properly test said API.
13:08 The Faction system works like this:
13:11 Factions are collections of Characters. it doesn't matter if they're Mobiles or PCs. Factions have two forms of membership - basic, and main. Main members have ranks and titles. Ranks 1-4 are system provided and can only be changed in limited ways, but the leader (rank 1) is able to create new ranks and even permissions and assign them as they please.
13:11 Factions can 'own' other Factions, aka: Sub-Factions
13:11 all members of sub-factions no matter how deep are considered 'basic' members of parent factions up the chain.
13:12 at the same time, anyone who is rank 1-2 (I may change this to some specific permission) is considered Rank 0 of a subfaction - they supersede the sub-faction leader.
13:12 Permissions are things like 'who can add new members' or 'who can moderate'
13:13 though the latter doesn't mean anything right now since I didn't code group channels like I did in Penn
13:13 Factions also have locks. at the moment only the 'see' lock is meaningful
13:13 this means that Factions can be invisible to non-members/staff, for special/private ones
13:15 Griatch Do you have to be based off the Character base typeclass or could any Object be used in principle ?
13:20 Volund well
13:20 any Object could be in a faction sure
13:20 I'm not sure how much point a ROOM being in a faction has
13:20 no actual checks are made at the moment on the API side but I was going to make sure that the commands to put things in them can only target characters.
13:21 it would make more sense for a Zone to be assigned to a Faction
13:21 as their 'territory'
13:21 DiscordBot <Chason> exits would be useful to allow/disallow people in factions for transiting
13:21 Volund I don't currently have any idea what that would mean; it depends on what the game devs want it to mean
13:21 Chason: sure, but you can accomplish that with locks
13:22 which is why the faction contrib will also provide relevant lock-funcs
13:22 also
13:22 everything about Factions is configurable in
13:23 default rank names, permissions, what permissions are given to basic members or main members regardless of rank, what permissions are given to each rank. also what typeclasses are used for both the factionmanager script and factions - it will change the latter on the fly without data loss, presuming you didn't change anything about the basic data storage and just added new things
13:24 Factions also use the new Option system so you can do things like assign a color to a faction
13:24 so it shows up in color all over the place
13:25 see why I was big on that, Griatch? :D
13:25 faction.options.color = 'r'
13:25 boom :D
13:26 I stripped the Faction system down slightly from the MUSHcode version, but on the other hand the MUSHcode version doesn't have the tree structure subfactions thing going on.
13:27 which replaces the MUSHcode system's 'divisions' code which before was purely for display purposes and cosmetics, but now with Sub-Factions it's ten times more awesome
13:28 this allows for some fairly complex social arrangements of player or NPC organizations
13:29 so what are Factions good for? Well on their own not much. but with the lockfuncs, they're great for restricting access to areas, making faction-only channels, etc. combined with the Zones system it might be possible to have some kind of 'faction territory management'. With a reputation system built into things like Mobiles you might have Aggro-against-enemy-faction or give-discounts-at-stores to members of X faction...
13:30 Griatch Sounds promising
13:31 Volund :D and it's almost done
13:31 I expect to have it done in the next day or two
13:31 Zones will require far less effort since it's mostly a skeleton of a system people are meant to expand on. I'll be providing some of my MUShcode-style tools for it though - +roomlist and +port. might call it @zlist and @zport though
13:32 One of my ideas for Zones though is...
13:32 a builder can @zone/select <zone>, and then any rooms and exits they create using @dig and similar tools will be automatically added to the selected zone.
13:32 This requires some new Signals to work. which are in some of those pull requests
13:34 Infrastructure, Griatch. infrastructure. :D
13:34 Chason: So MUShcode background huh?
13:41 Kardon Volund: I'm anxiously awaiting your contrib. :)
13:42 DiscordBot <Chason> Volund: Yeah, though its been probably 15-20 years since I did any MUSHcode stuff
13:45 Volund Oh, the community's gone into some pretty weird territory lemme tell ya Chason
13:45 I spearheaded some of it. :D
13:45 DiscordBot <Chason> haha yeah I've looked up some of it and it is almost unrecognizable
13:45 Volund my MUSHcode style is pretty ridiculously idiosyncratic though. that's the price to pay for making it powerful and easy to build new features quickly
13:46 .. relatively speaking
13:46 Python blows it out of the water
13:48 DiscordBot <Chason> I do think that my experience with soft code back in the day made reasoning about OOP much easier once I started learning real programming
13:48 Volund Kardon: well hopefully Griatch won't get too sick on us. :(
13:49 because a lot of my things keep depending on slipping new infrastructure into Evennia. :o
13:49 Though Factions don't. and technically I can turn off that feature for Zones at the moment
13:50 I'm pondering what else to add as a Contrib. I know I'm going to make an FCList/Theme system. Also need some kind of 'character approval' tracker.
13:51 DiscordBot <Chason> hmm what do you mean by character approval tracker? that sounds interesting
13:52 Volund a lot of MUSH games allow you to create characters and then 'walk through chargen' after which an admin will review the character and give it their seal of approval for play. unapproved characters frequently cannot enter the game grid or use most of a game's channels; they're little better than Guests.
13:53 it's usually good to track logs of who approved who and when too
13:53 DiscordBot <Chason> ahh yeah
13:55 Volund FCList/Theme system meanwhile is used for indexing characters and whatever source they're from, usually for superhero or other theme games. in those games, the same character might change hands frequently between different players, or need to be flagged as 'open for application' or 'currently played'
13:56 or possibly 'dead'
13:56 That's not hard to code at all.
13:58 I'm trying to dump everything I possibly can that doesn't absolutely require Models in as Contribs
14:00 DiscordBot <Chason> is it generally preferable for extensions to be written to go into the contribs directory or installable as pip packages?
14:01 Volund Chason: You can certainly go with the pip packages approach if you want to. the point of the contribs directory is to have an always-available supply of stuff that one would HOPE is up to date and immediately usable, either for demonstration purposes of how to use Evennia or just as stuff that Simply Works
14:01 Griatch is very big on wanting people to make contribs. but the pip approach does work if you know what you're doing.
14:02 I originally went with the pip approach with my project 'athanor' as a framework that fits atop of Evennia, but I realize now that it's an overengineered pile of problems waiting to happen that nobody's going to use as-is
14:02 DiscordBot <Chason> I'm rewriting the custom_gametime library for myself right now, I'll submit it as a patch when I'm done
14:02 Volund custom gametime could probably use a massive overhaul. I know it would never work for my Exalted game for instance
14:02 Exalted's calendar is... weird
14:02 so like
14:03 it has 5 seasons - one for each of the elements, Wood, Earth, Air, Fire, and Water.
14:03 each season is split into three months, Ascending, Resplendent, and Descending.
14:03 DiscordBot <Chason> haha I'm implementing the International Fixed Calendar in my game because I am a weirdo
14:03 Volund each month has 28 days in it.
14:03 rnmissionrun joined #evennia
14:03 Volund EACH DAY has 25 hours in it, for 2nd edition. 24 in 3rd edition.
14:03 AND THEN
14:04 ... there's a tiny little period called Calibration, a 5 day long period where the night sky has no moon or stars, that does not belong to any specific month and is not technically 'part of the year' at all. it is the time in-between years.
14:04 :|
14:05 DiscordBot <Chason> Yeah the int'l fixed calendar has a similar thing, its 13 months of 28 days each. That covers 364 days a year but then the last day of the year is "Year Day"
14:06 Volund (I actually did code a calendar for Exalted. in MUSHcode. and it works great.)
14:07 I did it through division math largely. the number of seconds, divided up, can tell you which day it is, and the days always progress in the same order.
14:07 DiscordBot <Chason> I actually think that would mostly work with the custom_gametime library
14:08 Volund mostly
14:08 only Calibration throws it off
14:08 insectoid joined #evennia
14:08 Volund NOBODY EXPECTS CALIBRATION. I've yet to see a single programmed fictional calendar that is ready to deal with Calibration.
14:09 DiscordBot <Chason> How I've got Year Day worked out is that the extra day is the "14th" month so the code checks if the month is 13 (since it is 0 indexed) and declares that year day
14:09 Volund ah
14:10 okay so lesseee
14:13 DiscordBot <Chason> the current custom_gametime library works by division like you said. So if you setup months to be.... 60 * 60 * 24 * 28 and then years to be (60 * 60 * 24 * 28 * 15) + (60 * 60 * 24 * 5) you should have a 5 day week at the end of the year. It'll technically still think its the same year but you can just make that part of the logic
14:14 Volund :D
14:14 I didn't think about that...
14:16 DiscordBot <Chason> The change I want to make is to make it more configurable where you can set days of the week, month names in instead of having to edit the code. Also I want to be able to set the start date
14:18 Volund i agree wholeheartedly with that kind of adjustment
14:20 also woooooooo. getting these commands working.
14:24 Griatch Chason: actually, what is in the custom_gametime library used to be in core Evennia. It was even configured in settings. We moved it into a contrib because this is such a game-custom thing and you are never going to account for every possible weird calendar out there.
14:25 So today core evennia has the base game time (which is just the normal calendar) and the weird fantasy/sci-fi calendars are to be handled by the contrib on demand.
14:26 DiscordBot <Chason> makes sense
14:27 Griatch (this is also why the custom game time module looks so similar to the core gametime module)
14:28 Volund aha
14:31 currently working on the group commands. I need to decide on how permissions will work...
14:31 like
14:31 should faction leaders be allowed to create their own sub-factions or should they need an admin to do this for them?
14:32 Griatch Does it have to be hard-coded?
14:32 Is it not just a permission you can tweak?
14:32 Volund I'm pondering ways to do it.
14:33 Griatch I'd say, allow for specifying permissions to go with each level
14:33 Then define what those permissions allow you to do
14:33 Volund yeah it currently does basically that
14:33 hrm.
14:34 Griatch So you are concerned by sane defaults then?
14:34 Volund only admin can create root factions, but I suppose it would make sense for faction leaders to be able to create sub-factions
14:34 yeah
14:35 maybe a Permission can handle who can administrate faction
14:35 s
14:35 like perm(Faction_Admin)
14:36 I could also create a custom lockfunc that responds to 'if you have this permission in ANY faction' but I'm not sure how well that would work efficiency-wise, not sure I'd want that running every single time someone types 'help'
14:38 there's really only one problem with Evennia permissions and it's that they are just arbitrary strings. there's no global register of what permissions are available, and what permissions are required to grant other permissions. :P but
14:38 hrm.
14:38 that wouldn't be hard to code though
14:39 the ability to create Permissions in some kind of database, and give each locks for who can grant/revoke them
14:39 leave the @perm command for superuser only then
14:40 well the raw granting thing anyways
14:40 actually that touches on a thing I am adding to evennia.utils.utils in the faction system
14:40 a utility can do something like this
14:40 @perm blah=!remove_this add_that !remove_other_thing
14:41 which supports PARTIAL MATCHING for each thing to add or remove
14:41 very handy for permissions
14:41 Griatch As long as it carefully fails on multi-matches I guess that's fine.
14:42 Volund it currently doesn't. wouldn't be hard to make it so though. my partial matcher works on the logic of 'organize all candidates by string length least to greatest, pick first match, preferring exact over partial, case-insensitive'
14:43 on the other hand, it supports matching against a list of OBJECTS instead of just strings.
14:43 though it CAN be a list of strings, sure
14:43 Griatch By the way - don't embed too much stuff in one PR. Things like the @perm change could be its own PR; it has nothing to do with factions per se.
14:43 Volund yeah
14:43 I was just using that as an example
14:43 PennMUSH lets you do things like set multiple powers/flags/permissions whatever on players at once, and simultaneously remove them
14:44 @set me=KEEPALIVE !DEBUG
14:44 would add the keepalive flag, and remove the debug flag
14:44 Griatch The evennia utils has a partial matcher too
14:44 Volund it does, but it works weirdly. I need to figure it out
14:45 and it only returns strings or indexes. It'd be nice if it could do string partial matching against a list of say, scripts
14:45 :D
14:45 based on what their __str__ returns
14:45 Griatch Anyway, never just pick the first match, that's a dangerous move, particularly when you are dealing with permissions.
14:45 So suggest an improvement to the utils matcher then
14:46 No point in making a parallel one that does pretty much the same thing.
14:46 Volund first I have to figure out how it works and how to change it without breaking whatever depends on it...
14:46 but point
14:47 Griatch Evennia as a whole also never just picks-first in a multimatch but always warns. I think that's a sane default.
14:47 Volund true
14:47 DiscordBot <Chason> oh one question I had about gametime, is that I'm not quite sure what theabsolute flag does
14:49 Volund I think I'm going to restrict it so that only admin can create Factions for the moment. for my simple implementation. it's just a command though - the API allows anything to happen as long as you can touch it.
14:49 cmd:perm(admin) or perm(Faction_Admin)
14:50 well the basic part of the API. the deeper stuff does require group permissions (which Admin all pass)
14:53 Griatch Chason: The absolute time is the 'actual' time. Relative gametime is the time since the game started and absolute is the epoch + time passed since game started.
14:53 The epoch in principle being settable by you (but defaults to the first time the server started)
14:54 Volund the great thing about having a lot of the logic in the APi is that I can do this:
14:54 check out switch_create
14:54 it's so TINY
14:54 Griatch But you could say that the day you open your game is "day 0" and set your epoch to that.
14:54 Volund err results.path_name
14:55 it works because
14:55 _CmdBase :D
14:56 Griatch So CmdBase will be used for all faction-related commands I take it?
14:56 DiscordBot <Chason> oh ok so now I think I understand why my custom gametime was ignoring the epoch, because I was setting absolute to False
14:56 Volund yeah
14:56 this is my usual pattern for commands where each switch confers utterly different functionality
14:56 Griatch So CmdFactionBase may be a relevant name
14:58 Volund and then I use Exceptions for all of my error messages so the command aborts right then and there. once ALL checks have passed it does what it needs to do.
14:58 evdemo [Public] flip just connected to the Evennia demo for the first time!
14:58 Volund this also means that the API can abort
14:58 because my API looks like this:
14:59 evenniacode [fork] chason forked evennia
15:02 evdemo [Public] toast just connected to the Evennia demo for the first time!
15:04 Volund I should probably start getting ready to head to school but
15:05 wanna keep coding~
15:11 Griatch: I ponder the value or sanity of creating a contrib version of BBS that doesn't use models. It would be slightly simplified from what I run in MUSHcode due to not using SQL, and I question how well it would handle running for years straight... but it's actually doable.
15:12 It would be Myrddin's BBS, more traditional approach
15:12 Griatch Or explore how to add optional models at unit-test time.
15:13 Volund yeah :|
15:13 that would be the saner option
15:13 Griatch (btw, all contribs must have unit tests, this is policy since about two years now)
15:14 Volund Iiiii have no idea how to do those...
15:14 Griatch Plenty of example in contrib/
15:14 And a whole wiki page too
15:14 Volund this is a problem, what if your system depends on having global scripts running or alterations to ?
15:15 Griatch Yep, one needs to handle that in the test.
15:15 Volund howwwwww does one handle 'adding a Global Script' to after has already been calculated...
15:15 uh
15:15 Griatch One can mock things.
15:15 Volund oh
15:16 you mean just inject it directly after the fact
15:16 Griatch That is, instead of you actually setting things up, you use the mock library to inject a dummy thing at the point your code wants it.
15:16 We use mocks extensively in the test suite.
15:17 Volund hrn. not sure how well this would work. I decided that a lot of things work out of argh
15:17 Griatch You can mock settings too of course
15:17 django even has its own decorator for it.
15:17 Volund ah
15:17 Griatch It's either @override_settings of @settings_override, don't recall which
15:19 At any rate, I spent most of last month writing unit tests to increase coverage on py3; this is important stuff.
15:19 Volund yeah I agree. I just shudder at the overhead and added complexity when I wanna get something out the door like, now. :P
15:19 Griatch I should really start demanding unit tests on all contribs, but so far it's only required for contribs since they are particularly vulnerable to regressions when the server code changes.
15:19 Volund but
15:20 learning to do tests is important
15:21 Griatch Volund: Making unit tests is not particularly fun, no. It's tempting to just put something together and go with it. But it does help a lot with stability.
15:23 I found that for some things it was also very useful to make unit tests just to have as quick testers/debuggers while developing. For example, when developing the new prototype extensions, I made a test suite that I just ran until I found no more errors. Much faster than to log into the game, reload and enter a command.
15:23 Volund hahaha
15:24 Griatch And then you just let those unit tests stay so that you know functionality remains unchanged later.
15:25 (this is called 'test-driven-development' although I was never so extreme as to make the test before writing the code)
15:26 Volund Griatch: so what's your view on Contribs that depend on other contribs? like for Factions and Zones, I created what's effectively an abstract class 'Tree Script.' It supports all of the hierarchy/children/parents stuff, name sanitization, creating and relocating Tree Scripts within their manager, and so on. Factions and Zones both use it as a parent (though Faction builds on it CONSIDERABLY more than Zones do).
15:27 Griatch If they are multiple files depending on each other, it may be best to group them together in one folder. Not sure there is a common theme for factions and zones though.
15:28 But generally, contribs are either a single file or a package
15:28 Volund there isn't, apart from them both using Scripts for a Faction or a Zone and them being organized in a tree structure with the same rules applied to them. (you cannot have two Factions of the same name with the same Parent. or two root factions with the same name. case-insensitive.)
15:29 and both using the simple_name rules (only alphanumeric characters, spaces, periods, hyphens, and underscores allowed.)
15:29 Griatch They do depend on the same parent though, which means a third file that is not itself a contrib.
15:30 Volund why wouldn't it be a contrib? if other people want to use TreeScripts, why not? :D
15:30 I dunno what else they're good for though
15:30 DiscordBot <Chason> when I am being a good person I write the simple tests first
15:30 Griatch Still sounds like they belong in one package
15:30 DiscordBot <Chason> then you know when your code is actually working
15:30 <Chason> oh yes you basically already said that
15:32 Volund hrngh.
15:32 evdemo [Public] flip disconnected from the Evennia demo.
15:34 [Public] toast disconnected from the Evennia demo.
15:35 Volund I'm pondering the best way to proceed. I don't mind contributing to Evennia seriously but I don't wanna slow down my own project too much either, I'm having way too much fun coding and felt that I could have something seriously usable and presentable within a month. And (meaning no offense Griatch, as I totally understand why Evennia requires more stringent standards) I'm an impatient bastard who hates having to wait on other
15:35 people to get things done.
15:35 DiscordBot <Trayes> Hey everyone. I have a question about being inside an object. Lets say I am inside my mech. Someone outside the mech says HEY. Can I hare them  in the mech? If not, how do I make it so that I can hear things intise the mech?
15:36 Volund I might be better off accelerating effort on Athanor and taking a more systematic approach with Evennia itself
15:36 Trayes: by default no you cannot hear them. you'll have to add some kind of ability for the mech to 'listen to events that happen in the room and relay them to the cockpit'
15:36 this could be done any number of ways
15:37 you could modify how the say command works, sure. but it would probably be better to change how mech.msg() works so that it relays everything it sees to self.msg_contents()
15:37 DiscordBot <Trayes> Thank you for your continued advice
15:38 Volund look at how say currently works. I believe it relies on Object.msg_contents() where Object in this case is the room
15:38 Griatch Volund: Well, you have worked on various incarnations of Athanor for four(?) years, mostly starting from scratch every six months. Is it too bad to make proper unit tests and actually lock in things you can use?
15:39 Volund Griatch: It is certainly not bad to do so no. Though this time I actually have the skills to make something that WORKS. :D
15:39 ... after trying everything that doesn't a hundred times.
15:39 Though what was that saying? genius is ninety-nine percent perspiration and one percent inspiration?
15:40 Griatch I think the global scripts and option system works well. But it does take a few rounds of revisions and polishing, that's just the nature of things.
15:40 Volund what I've learned from coding is that you don't learn anything until you break everything a thousand times and come to understand 'why did it break'
15:40 only then will you know how to build something that will work right.
15:41 rnmissionrun_ joined #evennia
15:42 rnmissionrun_ What's up with the ugly hardcoded ANSI in the @options command??
15:42 Volund check out @style - we're stil working on that one
15:42 @style border=r
15:42 THEn try out @options
15:43 this can all be changed around in
15:43 I personally picked the dark magenta and dark green color scheme because it has decent contrast but isn't so bright that it causes eye strain like c would do
15:44 I'm not sure how to merge the two commands properly. :|
15:44 Griatch The
15:45 The @option command could now in principle be made to use the new Option classes (since Options can be stored on whatever you specify).
15:45 Volund what is that CURENTLY stored as? a lot of those options are... well
15:45 they look like low-level telnet things
15:45 a lot of them, automatically set
15:46 Griatch It's only low-level client settings. If you save them they are stored in an Attribute as a dict
15:46 Volund oh
15:46 bostrt joined #evennia
15:46 Griatch It allows you to override what your client tells you it supports for cases when clients don't TTYPE correctly.
15:47 Volund which is frequently, I've noticed...
15:47 Griatch Or you could lock-in the screenreader mode
15:47 Many old clients don't TTYPE at all
15:47 Volund and there's nobody around to maintain them.
15:48 rnmissionrun_ Is there not going to be a 'clean' branch Evennia without all this added stuff?
15:48 Griatch So we try to guess based on the little info we can get. There is a hard-coded mapping in the Portal
15:48 Volund rnmissionrun_: errr, what do you mean 'clean'?
15:49 Griatch rnmissionrun_: What added stuff? The only things in core at this point is a handler for global scripts and a way to store Options in a generalized way.
15:49 Volund you mean where there are no colors or options set? I guess that'd make sense
15:49 well I also changed every single command to use the style_table wrapper and gave it example default colors in settings_default which were never changed
15:50 so now every evennia command that returns a table does so in color. which is a good thing! in theory.
15:50 I noticed a few mistakes I need to fix though
15:50 which somehow the tests didn't catch
15:51 Griatch May have to add new unit tests for them then
15:53 You could just set empty strings to these base style options to get no colors at all.
15:53 Volund or 'n'
15:53 'n' is better because at present the table styler does expect a color
15:54 if it has nothing to replace into that string it'll barf
15:54 Griatch Hm, that's not so good actually
15:54 It should probably default to not having any color at all
15:55 even if the style is not set or included for example
15:57 Volund did you maybe not even connect to the game or look at how style_table works? :( here
15:58 Griatch Who?
15:58 Volund[…]s/
15:58 I dunno, this is how it currently works.
16:00 Griatch Yes? It does not set a default no-color if you don't specify something in your settings?
16:01 Volund[…]
16:01 but a 'color' option does have to contain SOMETHING. it can't be 0 characters long. so 'n' is the best default for 'no color'
16:02 if it were 0 characters long, then the replace operation would end up with |<color><thing> being just |<thing> so it would treat characters from <thing> as part of the color code.
16:02 that's probably not what anyone wants
16:03 Griatch Well, logic needs to handle it, sure. But if you wipe your color options from the settings (because you don't want them), the style_table will get None I think
16:04 Or maybe it's a traceback on a missing option
16:04 Volund if you entirely vemove everything from OPTIONS_ACCOUNT_DEFAULT, it'll traceback
16:04 because style_table wants border_color
16:04 well
16:04 maybe it won't traceback for this one because None CAN be coerced into a string
16:04 but it'll still not do what you want it to do
16:05 Griatch Right. The styler should catch this case.
16:05 DiscordBot <Kaleara> if there's a contrib that i think doesn't work anymore, should i bug it?
16:05 Griatch Kaleara: Yes
16:06 Volund I figured it would be good to spruce up the default commands with colors and more functionality because honestly, they're actually really good commands that are only missing a few things here and there
16:07 the only other thing that they're missing is a way to restrict them without having to recode them wholesale
16:07 though I can think of a way to do that
16:07 Griatch Sure, but it's also true that some people despise color
16:07 restrict them?
16:08 xardion joined #evennia
16:09 rnmissionrun joined #evennia
16:09 Volund if I want @charcreate to be admin-only I currently have to either override it with a new @charcreate that has different locks or remove it from a cmdset outright. And there are a lot of commands that one might want to keep around but change their permission levels.
16:09 rnmissionrun Grr. I need a new ISP :(
16:09 Griatch I suppose we could change the style back to the more muted default colors of Evennia (basically just bold white for headers)
16:10 Volund n and w yes
16:10 border_color n, header_text_color w
16:11 I'm still pondering the best way to go about stuff.
16:11 Griatch Volund: Just making a child class of a command with a different locks: line seems a trival way to handle it
16:12 Volund then you have to import it and add it and... yeah it's trivial I just always am wondering if there isn't some better way but I don't think there is.
16:12 rnmissionrun I was under the impression that all the stuff Volund was working on, was going to be in the form of contribs that we could use or not, as we saw fit.
16:12 Volund since there's no way to target the commands USING a command to alter their locks, and even if you did so it wouldn't stick
16:13 rnmissionrun: yes and no. I am trying to add things to Evennia for more infrastructure which will NOT get in your way, such as Signals. I am also working on contribs. you fell afoul of a WIP in the develop branch that's still being refined.
16:14 styling table probably does need some more refinment as does setting the default colors back to something boring
16:14 thankfully it's easy to override per-game because it's a dictionary
16:15 I just do OPTIONS_ACCOUNT_DEFAULT['border_color'] and boom I only replace the one option. :D
16:15 (thats WHY it was made a dictionary)
16:20 I think I'm going to do my rapid development in Athanor to figure things out, design stuff that works and then when I have something to show off we can figure out what can be turned into contribs. now that Evennia has the new features it does, I can drastically simplify what Athanor is
16:20 mostly just need those doggone signals
16:20 time to dash to class though
16:27 rnmissionrun I dunno why you didn't just fork it and do your own thing so that plain Evennia could still be an option for those of us that prefer it.
16:31 Griatch rnmissionrun: There will always be new things in core from time to time; this is no different from me adding prototypes; you can remove and ignore this like other things.
16:44 evenniacode [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Incomplete docstring. Need to describe `alternate_value` too[...] ([…]ussion_r275884632)
16:44 [PR review] Griatch reviewed PR #1812 (Added flexible hooks functionality to @examine!): Better! But still too many new hooks (see comments).[…]treview-227306491
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Docstring needed. ([…]ussion_r275885054)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Docstring needed. ([…]ussion_r275884823)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: An incomplete docstring. ([…]ussion_r275886786)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Need to specify the purpose of `*args` and `**kwargs`, not j[66 more] ([…]ussion_r275886272)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Docstring needed. ([…]ussion_r275884895)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: There is no reason to break this out into a separate hook li[163 more] ([…]ussion_r275889260)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Missing docstring. ([…]ussion_r275890038)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: This should also not be a new hook. Either embed it in `retu[51 more] ([…]ussion_r275892565)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: The common name for this kind of entity in used in the API w[151 more] ([…]ussion_r275891052)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Incomplete docstring. ([…]ussion_r275890233)
16:44 [PR review] Griatch created review comment on PR #1812 (Added flexible hooks functionality to @examine!) for evennia: Similar for Objects; this should not be a new hook. ([…]ussion_r275891703)
16:46 [pull request] Griatch merged PR #1813 (Added at_object_creation_copy hook to DefaultObject.) to evennia/copy_hook
16:46 [push] Griatch pushed 3 commits to evennia/develop ([…]47...6807d3c65841):
16:46 [Andrew Bastien]: Added at_object_creation_copy hook to DefaultObject.
16:46 [Andrew Bastien]: Refactored the copy hook and added Kwargs.
16:46 [Griatch]: Merge pull request #1813 from volundmush/copy_hook\\Added at[44 more]
16:46 [issue comment] Griatch commented on issue #1813 (Added at_object_creation_copy hook to DefaultObject.) in evennia: Looking good now, thanks! ([…]comment-483746765)
16:58 pinkmagicdev joined #evennia
16:58 evenniacode [issue comment] Griatch commented on issue #1828 (Added Base Typeclass loading to Evennia API.) in evennia: It's not been done mainly because it used to be a circular i[206 more] ([…]comment-483758370)
17:13 [PR review] Griatch reviewed PR #1827 (On-Creation + Creator Signals): I think this makes sense; it feels a little wasteful to add[531 more][…]treview-227326004
17:13 [PR review] Griatch created review comment on PR #1827 (On-Creation + Creator Signals) for evennia: This is the wrong place to put this signal - because this me[154 more] ([…]ussion_r275900121)
17:18 Volund so put everything in Class.create() the
17:19 then
17:19 makes sense
17:19 Griatch Well, creation signals belong in utils.create
17:20 Volund they do need to know who made them to really have meaning though.
17:20 Griatch Yes?
17:21 Class.create calls utils.create
17:21 Volund I need a bit to look over that critique and what I did because that was yesterday. :D
17:23 Griatch Volund: I found one drawback of the option system btw
17:23 There is currently no way to wipe your customization to go back to the default. Just setting your option to the default won't do - then changing settings still won't affect you.
17:25 DiscordBot <Trayes> Having a problem. Can someone look at this. I am doing the  basic MUSH tutorial and this this problem.
17:26 rnmissionrun Needs more context, what is 'power'?
17:26 DiscordBot <Trayes> The tutorial has you make 2 stats.
17:27 <Trayes> self.db.power self.db.combat_score
17:28 rnmissionrun Where does the variable 'power' get defined?
17:28 Volund Griatch: it's easy enough to just delete all of the Option attributes or add a /clear <option> feature
17:29 in the original setup, if you change a setting to its default, it will just wipe the setting and use the default
17:29 did that not make it to the final product? I forget. gotta check
17:29 DiscordBot <Trayes> rnmissionrun: Thats the part I dont know myself. I dont know what it means to be defined. This is the tutorial. Should be a quick look to see if they did define it.
17:29 <Trayes>[…]ic-MUSH-like-game
17:30 Griatch Volund: Maybe it did actually
17:30 But probably not; you'd need a delfunc as well to know how to delete
17:30 rnmissionrun Ah, it's just a number
17:30 power = int(self.args)
17:31 Maybe you left out that line?
17:31 DiscordBot <Trayes> I will keep looking.
17:33 <Trayes> Found it!. Thank you
17:33 rnmissionrun De rien!
17:33 DiscordBot <Trayes> I am still new to all of this. So dumb mistakes happen a lot
17:33 rnmissionrun We've all been there ;)
17:35 Volund Trayes: one thing that you could consider is a command like 'control' that simply causes the mech to mech.execute_cmd(blah)
17:35 couple that with overriding mech.msg() like I suggested earlier and you have a fairly simple implementation of a vehicle that relays everything it sees to its contents
17:36 DiscordBot <Trayes> Everything you say, I just copy and past into a Notepad so I can try to understand it as I get better.
17:36 Volund heh
17:37 DiscordBot <Trayes> another thing I want to do with that system is add STATIC inside of Say messages. For thematic reasons. But that is very low priority right now.
17:38 Volund there is a language contrib that may give you some insight into modifying what people are saying on the fly
17:38 I need to examine .msg() more myself
17:38 DiscordBot <Trayes> Cool. Thanks again for all the help.
17:41 evdemo [Public] aaron just connected to the Evennia demo for the first time!
17:43 Volund I'm starting to get ideas about how to best utilize obj.msg() for my code
17:43 evdemo [Public] noctis just connected to the Evennia demo for the first time!
17:44 [Public] randomrandom just connected to the Evennia demo for the first time!
17:46 Volund I ponder
17:46 evdemo [Public] randomrandom: hi
17:46 [Public] randomrandom disconnected from the Evennia demo.
17:47 [Public] aaron disconnected from the Evennia demo.
17:48 Volund I wonder if it's possible to inherit from ContentsHandler and rewire it to support concepts like weight and volume.
17:48 make it so that thing.contents will not contain their equipped items too
17:49 this seems like it'd be more natural than what I'm currently doing
17:49 fit in better with Evennia's default commands. I'd probably override those -anyways- but
17:50 I should look into that for my MUD code
17:52 bostrt_ joined #evennia
17:52 Volund that would in fact probably be way more Pythonic and Evennia'ish of an approach
17:56 what the hell is happening here?[…]s/
17:57 isn't this basically what the @property decorator does?
17:57 hm... interesting. INTERESTING
17:58 I -can- do that
17:58 that'd be awesome
17:58 replace ContentsHandler with all the code needed to do what I want to do and have it exclude equipped items by default from display
18:02 god I love Python
18:05 slackfriarzen <friarzen> wow, lots of people logging into the Evennia demo today.
18:06 <friarzen> <finally catches up on scrollback>
18:06 evdemo [Public] Alexia just connected to the Evennia demo!
18:07 slackfriarzen <friarzen> hello to everybody in the Evennia demo :)
18:07 <friarzen> (from IRC)
18:07 <friarzen> you can use 'pub some-message-here' to chat with us.
18:07 evdemo [Public] Alexia disconnected from the Evennia demo.
18:09 Volund think I'll focus on schoolwork for now; will get coding after I make some progress here
18:16 dang I am learning so much
18:17 aaaaaah it makes me want to code but I have to do these stupid online quizzes
18:27 evdemo [Public] dorkguy just connected to the Evennia demo for the first time!
18:28 [Public] dorkguy disconnected from the Evennia demo.
18:41 DiscordBot <Trayes> Some of these tutorials have not been stupid checked.
18:41 <Trayes> I cant figure out where to put this stuff. To make the +attack command available to you in game, go back to mygame/commands/ and scroll down to the CharacterCmdSet class. At the correct place add this line:  self.add(command.CmdAttack())
18:42 Volund do you see the method called at_cmdset_creation ?
18:42 DiscordBot <Trayes> where would I see that
18:43 <Trayes> Yes
18:43 Volund it goes there. :) presuming that you imported it
18:43 DiscordBot <Trayes>
18:43 <Trayes> That is where I had it, and its not showing up.
18:44 <Trayes> So maybe I am doing the import wrong.
18:44 Volund what is your import line?
18:46 DiscordBot <Trayes> from evennia import default_cmds from evennia import CmdSet from commands import command
18:47 <Trayes> that sin
18:47 Volund uhhh
18:47 so it's from commands import command ?
18:47 that SHOULD work... if command has a CmdAttack()
18:47 Griatch Make sure you add it to the right cmdset (the characer one). Otherwise - check log for tracebacks
18:48 DiscordBot <Trayes> FOUND IT... I love you guys
18:48 <Trayes> class CmdAtack(Command):
18:48 Volund well that would do it
18:48 DiscordBot <Trayes> Thats the bug
18:49 <Trayes> This is what I get for typing all the code out instead of copy and paste.
18:49 <Trayes> but its how i learn
18:49 Volund yeah that would definitely do it.
18:49 systematic approach to debugging really does help. sounds like you're a bit new to Python?
18:50 DiscordBot <Trayes> New to programming in general. My ENG always built me tools in unity to build our games. This is my first solo project. So I am making tons of noob mistakes.
18:51 Volund ah. I see. well, Evennia's a pretty good choice for learning. some of what happens in its guts is really complex but the beauty of Evennia is you don't need to care about that; just write some commands and run 'em
18:52 DiscordBot <Trayes> I have noticed.
18:52 Volund heck that's actually the beauty of Python in general
19:44 rnmissionrun joined #evennia
20:46 keira_luna joined #evennia
20:47 keira_luna hi, trying out building a mud on my local machine for fun using evennia -- annd I forgot my password. Is there a way to reset it or... ?
20:50 chainsol hmm, you could do it, yeah!
20:50 gonna need to know some SQL, one moment
20:51 ooh, or just use evennia shell, one moment!
20:52 even easier - evennia changepassword <username>
20:52 keira_luna nice!! thank you!!
21:15 evdemo [Public] thorbus1 just connected to the Evennia demo for the first time!
21:16 [Public] thorbus1 disconnected from the Evennia demo.
21:30 slackfriarzen <friarzen> Hmm....
21:31 <friarzen> So for this one room challenge, I think I'm going to have to rework how everything in a room works to match a tag
21:31 evenniacode [push] Griatch pushed 1 commit to evennia/develop: [Griatch]: Set default color style closer to Evennia default
21:32 evdemo [Public] noldorf just connected to the Evennia demo for the first time!
21:33 slackfriarzen <friarzen> Hi noldorf
21:33 evdemo [Public] noldorf disconnected from the Evennia demo.
21:34 slackfriarzen <friarzen> Bye noldorf
21:36 <friarzen> It would be interesting to see why so many of these people that are connecting today disconnect so quickly
21:38 Griatch My guess is that these are people who don't know how a mud works at all - they see a link to 'play online' and is lost when they only see text.
21:42 slackfriarzen <friarzen> Are they mostly all connecting using the web client then?
21:44 Griatch I suspect so, if they come via a telnet client they are supposedly skilled enough to at least check out what is available.
21:44 The alternative is of course that they really, really don't like what they see. But not sure how much of an impression you can make in just a few seconds.
21:44 rnmissionrun joined #evennia
21:45 slackfriarzen <friarzen> I guess that's an interesting question.  Is the client type  logged anywhere
21:46 Griatch No
21:48 slackfriarzen <friarzen> I guess that's room for another infrastructure advancement then
21:49 rnmissionrun I've said before that there is nothing on that test site to grab anyone's attention.
21:50 Griatch They do log in though, they should at least be able to read the first introduction and be told that there is a tutorial to play?
21:55 rnmissionrun I'm curious to know where they discovered the link to the site in the first place
21:58 slackfriarzen <friarzen> Yeah agreed
21:58 rnmissionrun MU*s are so niche today that they are difficult to stumble upon by accident
21:58 That means they looked for something and found a reference to the site
21:59 slackfriarzen <friarzen> I did notice /r/mud posted a listing of code bases on the sidebar recently
21:59 rnmissionrun I have noticed more ads for Evennia based games appearing on the mudconnector
21:59 Volund I do wonder how many of the people connecting even understand what they've connected TO
22:00 a lot of them are also probably looking for a GAME because a lot of players aren't in the know enough to understand what an open source programming project is when they see it
22:00 rnmissionrun If I had to guess, I'd say that most of these folks are Arx players looking for more information on the server and discovering something they did not expect
22:00 Volund and when they see there's nothing there to do...
22:05 Griatch There are things to do, but if you can't read the intro I guess you are not really trying either.
22:06 That said, the demo's target audience is not really players of course
22:06 castlelore my gosh that root puzzle is hard
22:06 Griatch Is it?
22:07 Volund so I realized a bit ago, Griatch:    I can replace the ContentsHandler with an updated version that handles volume, weight, item capacity, stacking, all that stuff I coded into a buch of other things. :o
22:07 Griatch I can't tell if people joke about things like that
22:07 castlelore not that it's a bad thing!
22:08 a good game should be super challenging
22:08 Volund not necessarily.
22:08 Griatch That's interesting. The main issue with it is really to understand the difference between horizontal and vertical roots and that you need to move them all to the sides ...
22:08 I'd say it would be trivial if presented graphically, but in text one has to picture the roots more
22:09 rnmissionrun Would be nice to have a brief survey people could fill out, with questions like "how did you first hear about Evennia"
22:11 Volund I'm tryin gto remember, honestly
22:12 I think I was looking for MUSHcode repositories besides mine
22:12 Griatch Volund: Replacing the ContentsHandler on your custom typeclass is an interesting solution.
22:13 Volund well I am pondering various ways to go about it. I can either do that, or create an 'inventory' property that does something similar but excludes certain things
22:20 but 'contents' is what Evennia default stuff works with so
22:26 slackfriarzen <friarzen> I found the vines puzzle to be very very easy compared to getting the darn stick to light.  I think my first time through, the first 3 tries all randomly rolled the same "it didn't work" result, so I was pretty  convinced I had to do something else first, before I got eaten by a Grue.
22:27 chainsol The vines puzzle really confused me, heheh.
22:28 slackfriarzen <friarzen> Then one of my random flailing attempts to create wood sticks confused the parser and it mentioned "did you mean 'light'?" and so I tried one last time and it worked.
22:28 Volund we need to code scribblenauts in evennia
22:28 * Volund random
23:06 Volund I'm starting to get the feeling that maybe I should go the way of arx and etc and just create a 'mygame' with all of my stuff as a base
23:06 git makes this doable
23:06 much more doable than I first thought it would be
23:10 the mygame is laid out way better
23:11 and the more that I   code the more I realize Athanor is an overengineered, unusauble mess that serves no real purpose. it was a COOL IDEA to make it a big plugin platform but
23:11 and I learned a LOT from that effort
23:17 saying that now is probably going to make more than a few people facepalm
23:18 DiscordBot <Trayes> I will facepalm in solidarity
23:19 <Trayes> however, my understanding of the situation is minimal
23:27 evdemo [Public] donkey123 just connected to the Evennia demo for the first time!
23:31 [Public] donkey123 disconnected from the Evennia demo.

← Previous day | Index | Server Index | Channel Index | Today | Next day → | Atom Feed | Search | Google Search | Plain-Text | plain, newest first