Git Product home page Git Product logo

arxcode's Introduction

Build Status

Arx is a game based on Evennia. I decided to make an orphan branch open source to let people use code as they like for their own games and contribute if they like. In general we should be compatible with any given Evennia branch, though I tend to stay on master and occasionally make a branch to cherry-pick additions from develop.

The basic requirements are added in the different setup files. Evennia sets the django settings environmental variable at startup and looks specifically in the server/conf/ directory, so specify --settings=foo_settings where foo_settings is a settings file in the server/conf/ directory. The default will use production_settings unless otherwise specified.

Some django packages aren't compatible with Evennia due to clashes in middleware. Silk, for example, will throw errors from its middleware whenever an in-game script runs.

Evennia resources:

From here on you might want to look at one of the beginner tutorials.

Evennia's documentation is here.

Griatch wrote a great guide to installing arx here. Enjoy!


Docker

This will cover getting Arx up and running using a Docker container and docker compose. The purpose of this is to provide ease of use in development and is not meant to be used in a production environment.

Setup

  1. Install Docker
  2. Install Docker Compose
  3. Run the init script (./init.sh)
  • If you want to use the sample-development.env file, run the init script with the setup-env argument (./init.sh setup-env)
  • Once completed, kill the running docker process.

The init script will build the evennia db, build the docker file, and set the state.

A very basic environment file is attached in sample-development.env, which will give you a running local instance that can be connected to from localhost.

The server is localhost:3000 The portal is localhost:8000

If you wish to use those settings, you can run the default-env.sh script

Running Instance

In general, once the init script is run, all you have to do to start the server is docker-compose up. Changes made to the code base will not be represented in the default version.

Running Instance With Live Changes

In order to run the service in a live mode to support changes, you need to run the following command.

docker-compose -f docker-compose-live.yaml up

This mounts the entire bin directory to the most recent version of the arx:latest image.

In order to reload live changes, you need to do the following:

docker container ls

The result should look something like this:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1e5d4de22d3b        arx:latest          "start"             2 minutes ago       Up 2 minutes        0.0.0.0:3000->3000/tcp   arxcode_arx_1

After this, run the following command:

docker exec 1e5d4de22d3b evennia reload

This will restart the server with the live modifications from your local directory.

arxcode's People

Contributors

apostatecd avatar codersquid avatar dependabot[bot] avatar dvoraen avatar emonical avatar lebulldoge avatar notcutty avatar sgsabbage avatar sritterbush avatar tanookami avatar tehomcd avatar zironic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arxcode's Issues

Archive News Bboard

It would be super cool if the News bboard was set to archive! I feel like a lot of good/relevant info gets put into there, and it's always nice to have a bbpost to refer to on a particular subject.

12-Hour Times on @Cal

Is your feature request related to a problem? Please describe.
I hate 24-hour time. Even after two years on the game I pause to convert it in my head.

Describe the solution you'd like
Events on the website are listed in 12-hour time with AM/PM. I would die with happiness if they could show up that way in the +event system. Maybe it's a setting if other people love 24-hour time? I don't know. You would probably have to add like two or three more columns to the +event display. I'M SORRY. I still want it.

New PCs on Org Channels

Is your feature request related to a problem? Please describe.
When a new OC is created or someone picks up a roster, that PC will only be on (I believe) the Public channel. Players have to figure out the process of checking @clist and using addcom to join channels they want. Which isn't terrible or onerous, but it's a few steps, and some people are really not mused to MU* type code at all.

Describe the solution you'd like
So I think it'd be really helpful in these cases if newly-apped characters came in on their various org channels. (They can obviously turn them off if they want.) Orgs tend to be the big hubs for new players getting involved, so it'd be good for them to come "pre-installed" on those channels, as it were, for people to greet them and all that jazz. Helps with the welcome!

The Roll code does not keep bonus keeps

In the work code, a dice check is called with the org mod as bonus dice and org mod // 2 as bonus keep. However as far as I can determine, once that enters the roller itself it's completely discarded.

    keep_dice = DEFAULT_KEEP + self.bonus_keep
    if self.stat_keep:
        keep_dice += statval
    if self.skill_keep:
        if len(self.stats) == 1 and statval:
            keep_dice = 1 + (statval // 2)    <<<< Overwrites bonus keep
       keep_dice += skillval

Wigs and Dye

Is your feature request related to a problem? Please describe.
Wig and/or dye feature for changing the description of character hair.

Describe the solution you'd like
Wigs and dye could be separate recipes that both temporarily change the hair description of characters. Wig could correspond to an item similar to mask's effect triggering when worn, while dye might be a consumable with a script for how long it lasts similar to perfume.

Adding SR Rules to @Patronage Helpfile

Is your feature request related to a problem? Please describe.
The SR rules for patronage aren't listed anywhere! Except for the initial bbpost about the change. Or they're now listed in help patronage because I asked, but it would be good to also add a bit to help @patronage.

Describe the solution you'd like
In 'help @patronage', it would be great to add a simple clarifying bit about the code restrictions:

For PC patrons of Social Rank 1-2, proteges must be at least 3 social ranks below them. For 3-5, they must be at least 2 social ranks below them. 6+ have no restriction of rank difference.

It's just good relevant info to have somewhere lasting apart from that bbpost. Thanks!

Plot clue sharing

I think our current clue sharing is unhealthy because of the clue sharing scenes that no one enjoys, so I think we might want to circumvent it by making plot clue sharing possible and letting people learn the clues that someone adds to plots, despite our initial reluctance to do so. Maybe an AP clue share cost to publish it to the plot, and then let anyone opt to learn it. I think as long as we gate with AP from the person doing a publish then that avoids the abuse mechanics imo.

Potential issue with the legendaries commit

While as far as I can tell, there's no current code path that uses cost_at_rank in this way*, it seems written with the intention of being two way symmetrical however you only added the new cost at one side. So cost_at_rank(skill,5,6) and cost_at_rank(skill,6,5) will now return different results.

*The refund code seems to call cost_at_rank(skill, current-1,current)

Speaking of asymetrical XP code, if get_skill_cost is ever called with a value greater then 1 or a value less then 0 it will generate the wrong values because it will be calling get_skill_cost_increase(caller) at the current rating.

It also looks like the CmdAdjustSkill uses the original price paid for a skill to calculate the refund. The problem with that is that if a character refunds one of the first skills they ever bought, they'll get the base XP cost back. However due to the XP tax, that's no longer enough XP to buy that many dots in a skill.

Lastly a question, did you intend to double the cost of combat legendaries?

Page/Reply

Is your feature request related to a problem? Please describe.
It can be a bit of a pain when someone starts a new page chain with a number of people and you have to go through and make sure you catch all of them in your page back. After that, of course, you can just drop the names entirely, but it can be easy to miss people if it's a good number of them. Also: convenience!

Describe the solution you'd like
A 'page/reply' feature. Syntax would just be 'page/reply '. Simple idea, but I think it would be useful. The functionality would basically be to page whoever last paged you AND whoever else was on the recipient list. So example:

Aleksei pages Laric, Aureth, Orazio, and Hana. It's surely a very important message.

Aureth doesn't want to worry about making sure he catches every single person in this page chain, so he pages back with 'page/reply Aleksei was this really necessary' and, huzzah, the page goes to Aleksei, Laric, Orazio, and Hana! Like magic!

And after that, Aureth could just 'page ' to page the same recipient list.

This is helpful (IMO anyways) both for those big group pages and also just if somebody's got a long and/or complicated name and you're like UGH I am so lazy. But mostly for the first.

Work Invest, Psychology and Scaling

I've looked at the work/score charts for all the orgs my character is in and the code for work/invest and my conclusion is that I don't think players understand how invest works but if they did, it would vastly favor large orgs such as Faith/Grayson.

While clout is very impactful for the work roll, it's nowhere near as impactful on the work done as it is the prestige. This means that any non social character can still achieve about 50% of the work of someone with 40 clout. Additionally since invest and work is the same roll, it makes no sense to invest above minimum unless your prestige mod is above 200% since invest is a third of the AP.

Ultimately that means the real currency to raise a org modifier is AP and if the large orgs were clever, they'd ask all their members to spend 10 AP per week on work/invest. If they have 40 people and each of those could average 20, they'd go 2-3 in 10 weeks and 3-4 in about 15 weeks. If they did that, it would quickly become pointless to ever do a work roll with your sub org because the parent org would have so, so many more dice.

That said, people are not doing that at all. Instead the rule of thumb seems to be that there exists one, maybe two people who invest extremely large amounts while the rest of the org invest nothing at all.

So I think two things should happen

  1. Players should be made aware of that a large amount of small investments are very beneficial and pay off in the long run
  2. Sub orgs should benefit from investments in their parent org to keep them long term relevant.

Convert Configuration Settings to Config + Default

As part of the process for making things easier to develop with, there should be an easy way to add config variables to many of the existing Evennia support fields.

Ideally, this will prevent a need for some various hacks to manage both development and configuration of personal test_settings, as well as productionalization of instances.

The latter will be valuable as part of the managing multiple environments.

Timezone Support for Events

Is your feature request related to a problem? Please describe.
I am lucky! I live in server time. Others are not so lucky and have to go through the process of converting event times to figure out when they are in their home timezones.

Describe the solution you'd like
How I've seen it done on other codebases involved people being able to set their timezones on themselves (would be great for it to be shared across alts, probably) and then looking at @cal would give them event dates/times in their own timezone, and when they would create new events, they could put in the time in their home timezone and it should convert for others.

So server time is always American Eastern. Sao sets her personal timezone as being American Pacific. Now when she looks at the +events list, at specific events on the game, or at the event list on the website, they show up with their times displaying her timezone. When she makes a new event, it takes the time she puts in and treats it as Pacific and then translates that to the other timezones.

Legendary Discount Edge Case

If anyone tries to buy a legendary while they still have a discount, they'll get it relatively cheap since they'll be buying it for the cost in dots (50) until they run out of dots and then only remaining dots will be taxed.

In the long term it'll hardly matter(even in the short term they probably only save 100xp or something, although considering how training works it can end up saving them upwards of 450xp), since they'll still be fully taxed on all future spends but it's a curiosity of the implementation. I would probably suggest blocking legendaries until all discounts are spent even though that will prevent my characters dream of snatching a legendary for 725 xp <.<

Help/Link

Is your feature request related to a problem? Please describe.
Sometimes I'm in the game and I want to look at a helpfile, but I'd rather open it in the website. BUT then I have to go to the website and navigate to the World tab and go hunt it down. This is an entirely reasonable thing to expect me to do and not actually a big deal, BUT I had a THOUGHT.

Describe the solution you'd like
What if there was a command along the lines of help/link <helpfile> that basically looked up helpfiles the same way, but instead of sending back the actual helpfile, instead sent back the link to where it is on the website. So sample input and output using the number one helpfile you want to open on the website and never in-game:

help/link propriety

would return something like:

Propriety: http://play.arxgame.org/topics/Propriety/

And then I say, "Praise Tehom or whoever coded this particular bit," because I don't have to open the huge propriety helpfile on the game and I can instead just click the link. I guess there will be a minor difference in the link structure for lore helpfiles vs command helpfiles, but.

Usable Template Titles

Is your feature request related to a problem? Please describe.
For the new templates code, it gives you a template tag for the description of an item, and you can set the title of the template with color code, but right now there doesn't seem to be a way to grab the title color code. Which is sad, because often book/item names are pretty and colorful!

Describe the solution you'd like
I'm not sure what the best way to do this would be. Maybe in the +template <id of template you want details on> function, where it lists the Creator and Desc, in between those could be a line with the escaped template name? Or if there's a way to use the [[TEMPLATE_##]] tag to pull the template name when used for shop/name, craft/name, or write/title. I imagine just adding the escaped template name in the template detail view would probably be easiest (like how things show up in @study or for shop designs).

Additional context
I've talked to Giulio about this directly, and he said I could also submit it here, where I presume he will see! I don't know what user he is to tag, though.

He did note that an object can have multiple templates in the description, which would probably make it really messy to try to use the template tag in the title. But. You know! Something.

Favor/All Sorting

Is your feature request related to a problem? Please describe.
Right now I'm not sure what favor/all is sorting by. At first it seemed to be sorted by creation date of the favor, but then some stuff started ending up at the top of the list instead of the end, or in the middle, and I don't know!

Describe the solution you'd like
Could it sort by creation date of the favor (presuming that data is saved) so it's easier to check for new ones? SOME OF US ARE NOSY AND WANT TO KNOW ALL THE BUSINESS DON'T JUDGE ME

Add HTTPS

Is your feature request related to a problem? Please describe.
Currently not using HTTPS, which isn't great.

Describe the solution you'd like
Probably use LetsEncrypt/Certbot with nginx. Issues with Evennia in implementing TLS have been described here: evennia/evennia#1421

Describe alternatives you've considered
There's a few older twisted libraries for working with LetsEncrypt that could be kind of interesting, or registering via an endpoint.

Additional context
Added this as an example issue with converting feature requests from in-game database entries to using github issues.

Missing Items on Website Character Sheets

Is your feature request related to a problem? Please describe.
For some reason, the Birthday and Marital Status fields don't show up on PC pages on the website!

Describe the solution you'd like
It would be cool if they DID show up on PC pages on the website. They just seem to be missing. Though: for Marital Status, it would be EXTRA cool if it also pulled in the spouse from the @family code and did a live link to their page. Like if someone has a spouse set and it's a PC that their marital status could be like "Marital Status: Married (Ainsley Grayson)" on Tikva's page and the "Ainsley Grayson" in parentheses would link to Ainsley's page. (Might need to filter based on the spouse still being alive so as to avoid it populating with dead NPCs like some people have.)

Propriety/View

Is your feature request related to a problem? Please describe.
The propriety mods are all so cool! I want to be able to see everyone who has a certain prop mod applied to them!

Describe the solution you'd like
It would be AH-MA-ZING if we could see all of the people that a specific propriety mod is applied to. Like 'propriety/view Respected Artist' would spit back a list of all the PCs with that mod applied. It doesn't have to be 'propriety/view'. OBVIOUSLY. But I would absolutely love to be able to see a list, and also all of my ambiguous friends also think it's a great idea. Don't ask me for names. I don't give up names! I just ask for lists of them on command!

Legendaries and XP

I think the way Legendaries interwork with the XP tax right now is a bit awkward. Because of the fact that the cost is set to 1000 in the cost function but it's treated like any other skill in the xp-tax function (ie, it counts as 60 or 120) it creates a situation where it's it's thousands of XP cheaper to buy a legendary if you buy it as your very first skill, for instance after a respec.

Maybe it would be better if Legendaries are exempt from the tax all together but you're limited to only one?

I maybe made you raise the xp cost of the entire game because I messed up my math

So this is the original XP tax:
500*(1500/500)+50*(2000/500)+30*(2050/500) =1823
30*(1500/500)+50*(1530/500)+500*(1580/500) =1823

And this is the current XP tax:
500*(2000/500)+50*(2050/500)+30*(2080/500) =2329.8
30*(1530/500)+50*(1580/500)+500*(2080/500) =2329.8

As you can see, it was order agnostic to start with and now I wonder why I was so sure it wasn't.

Remove template reference when object is junked.

Currently, all objects that have applied templates are mapped to a bridge table, to be able to determine /which/ objects are using a specific template.

Currently, when objects are deleted, there is no mechanism for cleaning up these stale references.

As part of the general database cleanup script, after all objects are hard removed, template references should be removed as well.

List for +investigate/requesthelp

Is your feature request related to a problem? Please describe.
The investigate/requesthelp command currently can only take one argument at a time. That is sad when you want to invite multiple people to an investigation!

Describe the solution you'd like
Can investigate/requesthelp instead accept a comma- or space-separated list so you can invite multiple people at once?

Emit_Label on All Poses

Is your feature request related to a problem? Please describe.
So right now the emit_label setting just labels poses that actually use the emit command. Which makes sense! But when you think of the emit_label setting as something for adding clarity to scenes, it can actually make poses that instead use the pose (:) or say command harder to see!

Describe the solution you'd like
It would be super awesome if all the RP commands -- emit, pose, and say -- got an emit_label tagged in front of them for people with that setting on. I know that output from pose and say already start a pose with the character's name, but part of what makes emit_label so clear is how it's bracketed off and highlighted, so I think it would be a net positive for clarity to add it to pose and say as well.

Additional AP / Work Related Opportunities

With the removal of AP as a mechanism for generating wealth (buy selling, trading, etc), I believe there should be an opportunity to get silver from them.

Either a mechanism that allows them to do +work rolls that convert into silver (perhaps at the rate of 200 * the resources that would be received), or a mechanism for converting AP to silver at a flat rate.

Or, perhaps both, with the latter being a commoner only option.

Unpredictable disconnects

Every now and then my client gets disconnected from the game, it seems to happen more on my idle clients but more rarely my active client is affected. It seems to happen after between 1 and 6 hours so I have a hard time figuring out the cause, maybe it's related to the very large input delay I sometimes experience.

It would be nice if it could be fixed because I like using my desktop client for logging even if I might be doing my RP from my laptop.

Organisation Clue Filtering

If you're in an organization that has a large amount of clues, it is really hard to see at a glance if there's any clue you don't have. I would suggest a symbol or a color is used to distinguish between known and unknown clues.

Reference Wear/Outfit in Outfit Helpfile

Is your feature request related to a problem? Please describe.
Right now the 'outfits' helpfile doesn't make any reference or mention to the 'wear/outfit' and 'remove/outfit' code, and I've come across a few people who missed it entirely!

Describe the solution you'd like
Maybe it'd be possible to add that syntax to the outfits helpfile or at least have a note that says something like:

For information on wearing and removing outfits, please check 'help wear'.

IC Event Date on Website

Is your feature request related to a problem? Please describe.
Event pages on the website currently list the OOC date, but not the IC date.

Describe the solution you'd like
It would be very helpful if event log pages indicated the IC date as well as the OOC one. (Oftentimes I know people can look back to an +event to check when it happened ICly, but there's not an easy way to immediately see that.)

Postgres Cutover

In relation to #36, switching over to Postgres would provide substantial improvements, both in general performance, as well as in reduction of database locking.

Given the scope and complexity of the problem set, along with developing a solid cutover script, my recommendation is to do the following:

  1. Take a snapshot of the database at a point in time,
  2. Run the cutover script,
  3. Do initial testing to get it to working,
  4. Run it as a live/live with a staging-esque environment.

Ideally, at that point, have a group of people just go in and mess around with the data sets / commands, trying to break things / determine if things have broken.

The code to investigate a clue appears to have a syntax error

Repeat the command to confirm and continue.
You use 100 action points and have 114 remaining this week.
You spend 0 social resources to start a new investigation.
AttributeError: 'Clue' object has no attribute 'tags'
An untrapped error occurred. Please file a bug report detailing the steps to reproduce.
(Traceback was logged 2018-12-04 03:42:26-0500).

I believe the issue is here on line 196 of web/character/investigation.py
search_tags = list(source_clue.tags.all())

Clues don't have tags, they have search_tags

Clout, Power Curve and the Average Case

Reading the MSB thread there appears to be a re-occuring frustration from players that praises and modeling from non-specialised characters have almost no effect and from Staff that people very rarely use modeling.

I think that has much to do with the extreme curve that these systems are using where the low end is actually 2-3 order of magnitude smaller then the high end and looking at the comment in the fashion code, that seems to have been done on purpose.

I think that if you want to encourage these systems to be more widely used, you need to make the results produced by an average character using it in an intended way much closer to the high end results and that will require tightening of clout benefits across the board.

Right now if you take say a character with Composure 4, Performance 3 and Clout 5, which if you'd believe the helpfiles is a pretty social character and run them through the fashion roll. They'll come out with 132 on average while a 5/5/10 character runs 430 and 5/5/20 averages 811and 5/5/30 1265. Meanwhile a non-social character will get squashed by the 30 difficulty and come out with a 1.

If for instance, all characters no matter how terrible they were would be guaranteed a result of 100 here +/- some fuzzing, then all characters would be getting some decent fame for showing up in new snazzy stuff even if only 1/8th of the higher end socialites.

In the land of praise because your praise is basically Clout*Prestige mod, a low end character might have 5 clout and 50 prestige modifier for a total of 250 while someone with 20 clout and 100 prestige have 2000 before accounting for the charm+propaganda roll itself. I think similarly here you could just give people who are below 5 clout/50 prestige a push up to that level which would atleast let them praise in the 5000 range instead of 10.

I know I started this talking about the average and ended up talking about the low end, but that's what happens when you write these things at 3am. The suggestions are arbitrary to illustrate the idea.

De-obfuscating Fashion

Currently the appraisal printed out by the model command is mildly to highly misleading for most characters for two reasons.

  1. Outfit tier and quality is accounted for in the fashion roll instead of fashion appraisal.
  2. The appraisal does not account for the stats of the wearer.

I propose this could be fixed by making two changes.
A.1) Quality Level and Recipe Level is moved from roll_for_fame to item_worth.
A.2) The quality level denominator should be changed to /10 instead of /40. Roll would instead be divided by 400 instead of 100.
B.1) The estimated fashion power is shown in appraisal. Estimated fashion power would be
((charm+composure)5-30+clout3)^1.5 / 400

For example a character with 4+3 and clout 10, would be given a fashion power of 50%
B.2) Would be fashion models could be given a command to check the audience power of the room they're in.

PS: All the magic numbers should probably be moved to a setting of some sort.

Worn items need a more human readable format

Right now when you look at a character their items are printed in an essentially randomly ordered very colorful list. The net effect of this is that it's almost impossible to tell at a glance what a character is wearing as their shirt or earring etc.

Since worn items are attached to a paperdoll system, I think it would make a lot of sense if that paperdoll was printed or at the very least the items are always printed in the same order.

Investigation tag error isn't intuitive

At the moment if you try to create an investigation for a clue you have absolutely no idea what the tags are for. You'll run into a problem where you try to put in random terms and the game will tell you that it can't find the searchtag.

New players especially will have no idea what that even means. I think the error message should be changed to something more helpful and/or allow you to explicitly search for unknown.

Template object backfill

As part of the process of reducing database bloat, as well as helping prevent ASCII theft, we should start backfilling a conversion to templates.

This will involve several steps:

  1. Determining duplicate descriptions,
  2. Determining original source of description and assigning as closed template,
  3. Provide tools to generate reconciliation by scan.

Reset Model at Cron

Is your feature request related to a problem? Please describe.
Right now modeling is run on a timer similar to actions: your modeling slots reset seven days after you use them. However, right now there's no way to actually tell when you last used them, and it can be difficult to navigate/plan out when you have enough slots to use for a whole outfit if you've used them for individual items a week ago, etc.

Describe the solution you'd like
It would vastly simplify things IMO if the modeling slots just reset at cron. That way people would only have to keep track of that week and they would know exactly when all their slots are free. And it would be a lot easier to manage the timing of OUTFITS if maybe one week you just had an item or two to model and the next you had a whole outfit but needed to worry about HAS IT BEEN SEVEN DAYS YET etc etc etc. Anyways this would be wonderful.

Number Formatting

Arx uses a lot of 5, 6 and 7 digit numbers which are often presented left-aligned. This makes it really hard for me to read if a number is 50k, 500k or 5 million.

I would like to see right-align for numbers and ideally also separators.

XP Cost consistency

The way the XP tax is currently calculated, you're actually charged a different amount of tax based on the order you buy your skills with it as a rule of thumb being cheaper to buy expensive things as early as possible.

This could be prevented entirely by changing the way XP tax is calculated to take the new rating into account. Since the cost increase function is linear the end result will always be:
costincrease = (get_skill_cost_increase()*2+cost * 0.02)/2

That would mean trying to buy a 1000xp legendary raw in chargen would end up costing 2000 because of incremental tax.

Outfit/Get

Is your feature request related to a problem? Please describe.
Outfits are AWESOME. One functionality that's missing is that you do have to already have all the items in your inventory to use wear/outfit. BUT...!

Describe the solution you'd like
An idea that's been brewing around in my head since the super awesome OUTFITS feature:

outfit/get <outfit> from <container>

That is: Check a container (in the room with you) for components in X outfit and take all of those components into your inventory. This would help provide a quick shorthand to retrieve outfit items, which would just make the process a bit easier.

Legendaries and XP Cost

Not a problem, but a change: Legendaries were recently changed to have XP Tax at a base cost of 1,000, resulting in a very intimidating 200% tax all on their own. This puts them in an awkward place where newbies are incentivized to buy a legendary early, before tax makes it impossible, but can never round out a concept; for older characters, they're already priced out by requiring 3-5 years' worth of XP gains. This is especially true for characters in social or combat spheres, where you require several high end skills to really function well in your field. Their XP tax will quickly escalate, even if they stay confined to a single sphere.

So I'd like to suggest an alternative: A 500-1,000 XP legendary, which is exempted from the XP tax entirely, but you can only have one. As an alternative: The first is tax free. Another alternative: They double or triple in cost with each legendary, having their own cost curve similar to stats.

The reason for this suggestion is both to make it an attainable goal, and because I believe it would be better for story purposes, especially for staff members running stories. If someone has several 5's, that can blur out the flavor and become less distinctive. By having one legendary, the player is signaling, both to other players and to staff who are running stories, 'This is my character's greatest strength.' And signaling their willingness to devote months' worth of XP to that.

That would be as opposed to very few people ever reaching for a 6 at all, given that several of players who currently have them likely wouldn't have bought that skill to 6 if they'd been aware it would have a 200% XP Tax attached.

Just my suggestion.

Check a PC's Prestige

Is your feature request related to a problem? Please describe.
You can use +score to see to the top 20 PCs, and +score/all to see all the PCs, but you can't use +score to check just one specific PC.

Describe the solution you'd like
It would be great to have +score <character> or +score/pc <character> or something like that -- basically some way to see the prestige scores of people outside the top 25 you get just with +score.

The org/briefing inform is broken

Currently when a character is informed by org/theorybriefing they're given an inform that looks like this


XXXXX Briefing

You've been briefed and learned a clue. Use @clue 44281 to view them: Name of clue
You've been briefed and learned a clue. Use @clue 44282 to view them: Name of clue
You've been briefed and learned a clue. Use @clue 44283 to view them: Name of clue
You've been briefed and learned a clue. Use @clue 44284 to view them: Name of clue


There's one objective bug here and one request

  1. It's printing the discovery ID instead of the Clue ID.
  2. Since most clues are short-ish, I think it would be convenient if the clue text itself was printed into the inform.

@Cal and Bboard Formatting

A few related formatting things based on some wonky things I've seen happen that messes with the cal display and event alerts:

  1. Could we add an {n at the close of bbpost titles to prevent them from bleeding like you've done for object names and the like?

  2. Could we add an {n at the close of @cal event names to do the same?

  3. Can we prevent @cal event names from having line breaks like we do for object names?

recieve messages

I make this typo all the time. Based on Brents latest MSB post, he too makes this mistake all the time.

Can we make recieve messages and recieve messenger an alias for receive messages?

Database lock

It seems to me that the current behavior of the game if it encounters a database lock while trying to process a command is a lossy failure, resources can get consumed without the result being written to the database. While probably a huge pain in the ass, most commands should be rewritten to be transactional so that upon failure they don't corrupt the state.

The Haggle Roll

Honestly the code for the Haggle roll bugs me because it's so inconsistent with all the other rolls in the game.

For almost all the other rolls that involve prestige or clout in some way, prestige or clout is used to generate a percentage modifier which is then applied to the original roll. This makes prestige and clout enchance a roll rather then supplant it.

However in the case of Haggle, for most intents and purposes Prestige /is/ the roll. A character with 1/0 Charm/Haggling and 3 million prestige is actually better at Haggle then a character with 5/5 and 30k prestige. Aside from the aesthetical concern of the Arx version of Mila Jovovich being a way better merchant then the Arx version of Warren Buffet I think it's problematic because it means the vast majority of characters built to Haggle arn't any good at it because they just don't have enough prestige and it's really hard for a new character to get to that kind of level. Especially if that character goes for skills like Economics or Haggling because those skills won't build the clout they would need to climb that prestige ladder.

Event Praise

So Kodiak talking on MSB how he wanted to be more famous being a champion made me think it would be pretty cool if Event organizers would get a very significant pool of praise they could use to reward people who participated in the event. This could help represent things like winning a competition or being the most dazzling couple at a ball.

I would probably base it on a combination of the largesse and the prestige of the event participants and scale the effectiveness inversely with the prestige of the target. (So that less famous people have the chance to temporarily get really famous but those already famous don't get much).

Check For Alts On Org Invites

Is your feature request related to a problem? Please describe.
Sometimes people manage, by accident or otherwise, to get two alts into the same org. Mostly this seems to happen in the Faith org where people have alts in two different discipleships. It's a little awkward to notice and ping staff about. (Although it's been a very long time since this happened that I recognized alts to notice, to be fair. But this request was originally submitted a while ago when it had happened a couple times.)

Describe the solution you'd like
It might be worth it to either block people from accepting org invites if their alt is already in the @org (so probably adjusting the @org/accept command) or just sending an automated +job to staff or something letting them know that it happened. I figure with the former option doing it on @org/accept instead of @org/invite will help to maintain a little more alt privacy -- that is, the person being invited would get a note that they can't accept an org invite because they have an alt in that org. Or perhaps it goes in the automated @Inform letting them know they have an invite, adding a line that they can't currently accept because their alt is in the org.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.