dexterhuang / cybercodeonline Goto Github PK
View Code? Open in Web Editor NEWCyberpunk Text MMO RPG, built with React.js & Typescript
License: Other
Cyberpunk Text MMO RPG, built with React.js & Typescript
License: Other
Currently there are a lot of duplicate messages.
[system]: You received 8640 SCAVENGE experience points
[system]: You received 36 ammunition tech parts
[system]: You received 24 medical tech parts
[system]: You leveled up your scavenge skill
[system]: You received ammunition tech parts
[system]: You received medical tech parts
While the XP gain and level up messages are different, they could also be combined into one line.
When using an Item with two upgrade-slots, there is a bug when removing the second upgrade.
I had attached an healthUpgrade
(first) and a damageUpgrade
(second).
When removing the damageUpgrade
, I received a copy of the healthUpgrade
in my Inventory, instead of the damageUpgrade
.
For quite a while I was avoiding crit chance because in my stats it said I had 0% crit damage. It was not apparent that there is a base crit damage %. This base should be in Stats.ts and then added to when gear increases it.
Something like this at the top level:
{
"name": "CyberCodeOnline",
"version": "1.0.0",
"description": "ShangriLa and surroundings",
"browser": "src/Location/Surrounding.ts",
"scripts": {
"test": "echo \"Every fight is a test\""
},
"keywords": [
"game",
"shangrila"
],
"author": "DexterHaung",
"license": "proprietary",
"homepage": "https://cybercodeonline.com/",
"repository": "DexterHuang/CyberCodeOnline",
"bugs": {
"url": "https://github.com/DexterHuang/CyberCodeOnline/issues"
}
}
Currently there are usually more people joining than there are people chatting and it adds a lot of noise to the point that I usually just have the game muted and wind up ignoring chat.
Currently
(or bugs and suggestions you are encouraged to create a issue on our github page)
Correction
(for bugs and suggestions you are encouraged to create a issue on our github page)
Chat filters like most MMOs have would be nice. I picture it being an icon to the right side of the chat header. When clicked a small dialog with check boxes for each type of message comes up and you can choose what you would like to see.
At least some sort of default sort, either lexical or by level. I want to check if person X is currently online.
Add shortcut keys like "ctr + w" (close current tab).
When clicking on an item that would prompt the qty modal (How many of X do you want to do?), if there is only 1 item, do not prompt that modal.
Example:
Molecular3dPrinter
I have trashHelmentCache_x1
I click on Molecular Print
It should just print it, it should not prompt me for how many I want to print. I only have 1. It's an extra, unnecessary click now.
I'm currently playing on a 13ish inch laptop (don't ask, it sucks) and I only get 3 lines of visible chat at a time but scrolling with the mouse wheel moves 4 lines. I know this is a problem on my end, I could make the mouse scroll less. But a good and generally useful solution would be to make it so you can drag/drop to resize the chat pane.
If you use jQueryUI, their resizeable function has worked excellent for me in the past.
Another issue I've not come up with a good solution for is that the online players list is off the screen unless I collapse a section above it.
Suggestion: Add an option to quick remove all attached modules from an item in your inventory. That way it's easier to move modules from one weapon to a newer weapon, rather than going in to the old weapon's module page and clicking on every individual module to detach them.
Including keyboard shortcuts for common actions would be awesome (and would also add to the illusion of coding). Thanks for the awesome work!
DG name should be enterSlumKingLair instead of enterSlumKingLiar
Add scrap()
and destroy()
functions to class ItemStack
screen.
This facilitates the gameplay scenario where an equipped item with upgrades attached is being unequipped, stripped of upgrades, and then scrapped. In the current workflow, you have to enter the Details screen to remove the upgrades, then close that screen, go to Inventory/Stats, hover, and scrap from there.
One feature that would be really helpful would be the ability to sort enemy lists - especially by enemy level, but sometimes also by attributes ("strong," "angry," "shielded," etc.) or possibly type (not currently useful, but perhaps in the future if/when the various enemy types become better differentiated). This is the sort of QOL feature that would be really helpful when, for example, I'm in a region with enemies at level k through k+3, but I'm only strong enough to be able to (regularly) kill enemies up to level k+1. To be honest, having to constantly search through the (currently unordered) list to find enemies at the appropriate level gets old fast.
From a framework perspective, I imagine that sorting enemy lists is pretty trivial. But what's the best way to enable this at the UI end? After thinking about it for a bit, I've come up with an idea that I think presents a good opportunity to provide access to this feature, while at the same time enhancing the aesthetic of being in the "Visual Studio" environment.
It mimics VS' autocomplete functionality to provide an opportunity to the player to apply a method to the list to sort it by their desired attribute. Here's an example/walkthrough.
(Note I mocked up these screenshots in a very quick-and-dirty manner by hacking around in my browser's DOM explorer in real-time; so it's only intended to be a rough conceptual example; the actual final visuals would obviously end up looking different; ideally with better fidelity to the Visual Studio popups, for example.)
So. Say I'm in an area with the following unordered enemy list:
If I want to sort it, I can click on the identifier name (enemies = [
) which, when I hover over it, becomes highlighted to indicate it can be interacted with:
Clicking on the identifier takes me down to the bottom of the list, appends a dereferencing marker (e.g.: a dot) and an autocomplete list of methods that one can call on the list. For example, I've been talking so far about sorting it, but since rescanning the list is functionality that already exists, one could conceivably add it as a method here as well:
Clicking on the sort()
entry in the autocomplete list fills in that method name, and if there are parameters (which, for example, the sort()
method might have, but the rescan()
method might not), adds an ellipsis in the parameter space, which again becomes underlined on mouse hover, to indicate it can be interacted with:
Clicking the parameter list ellipsis again opens an autocomplete list containing the valid parameters for that method:
The player clicks on the desired parameter, which gets filled into the code. The sort()
method now has a valid and complete signature, so its name changes colour to indicate it is callable (and of course becomes underlined on mouse hover):
The player clicks on the method to execute it, and voilà! The list is sorted:
I would like to have the feature of closing tabs with the middle mouse button.
Create a gist from the battle log, including the loot
like:
useSpecialWeapon() {
const dmg = 321; // 233(base) + 88(attachment)
const remainingAmmo = 1;
}
Next to the item, add a emoji.
It is desirable to be able to switch between emoji mode and text only mode.
e.g.
It would be helpful to have a stats screen of your current overall stats.
Please give the ability to abandon a quest (ex. Join Dungeon). It's highly dependent on others to do it. And if no one is up for sharing a dungeon code, you're unable to do any other quests. Giving the ability to abandon the quest allows the player to pursue any of the others that randomly come up.
It's understood that Join Dungeon is a co-op gameplay mechanic, and having the quest there is to promote people playing together... however if I'm > lvl 30 and someone shares a lvl3 dungeon code...I'm just joining and exiting. I can't even benefit from the dungeon.
Include enemy damage to the player in the combat log.
Currently there is good value in killing enemies much lower level than you because of the speed at which you can plow through them. You get loot and even XP faster because its only a couple clicks per kill. This can make it difficult for lower level players to get any kills.
My suggestion would be to drastically reduce XP gain for enemies starting 3 levels below the players down to 5 levels at which zero XP is given. Also, do approximately the same for loot. You could even go so far as to make enemies that are too weak flee from a fight so the player does not even have the ability to kill them.
It would be handy to be able to change the colorscheme to match the one you use at work. :)
During combat, hovering over useSpecialWeapon or useDestructiveWeapon displays YOU DO NOT HAVE ENOUGH ENERGY_CELL/ANTI_MATTER_CHARGE when I have ammo in my inventory; clicking on either weapon still successfully uses it and expends ammo
Max inventory size:
inventorySlotCount = 1;
primaryWeapon = lv4_x;
specialWeapon = lv4_x;
destructiveWeapon = lv4_x;
helmet = null;
upperArmor = lv4_x;
lowerArmor = null;
boots = null;
☝️ This currently results in Average Level === 4. It should probably be calculated as either the Math.floor()
(preferred since it would be more true about where you stand) or Math.round()
of the median:
const equipmentLevels = [4, 4, 4, null, 4, null, null];
const numerator = equipmentLevels.reduce((sum, val) => sum += val); // 16
const denominator = equipmentLevels.length; // 7
const avgLevel = Math.floor(numerator/denominator); // 2
Obviously keeping the "timeNeeded" to open, but maybe have a queue.
Whenn clicking autoScrap, there should be a prompt showing what it is going to destroy (maybe with a checkbox to ignore in future)
This looks convincingly like vscode, except that it's running in the browser. an Electron version would make this look even more like vscode.
Dungeon id: T-igCP97 (Lv30)
Went through all the rooms and boxes and none of them had yamesaKey 3.
A refresh is required for other players sheets to update after viewing them.
As the title says. Curious if there are any plans to make the game OSS
Hey,
Dark Reader is an extension for auto-converting pages to a dark theme. It's open source and there should be some way to signal to it that a dark theme is natively implemented so it wouldn't apply it's filters (possibly with an empty prefers-color-scheme CSS media rule?).
Built in random number generation is junk, it uses the systems built in random table and even with good seeding users will see strong patterns in RNG functionality. Using crypto random can drastically cut down on user perceived patterns.
This is code I've used in browsers, but I'm not sure the best way to implement this sort of thing in Node.
Math.trueRandom || (Math.trueRandom = function() {
var b = Math.random();
try {
window && window.chrome && window.crypto && window.crypto.getRandomValues && (b = window.crypto.getRandomValues(new Uint32Array(1))[0] / 4294967296)
} catch (a) {
b = Math.random()
}
return b
}
);
Math.randomInt || (Math.randomInt = function(b, a, c) {
if (!c || !Array.isArray(c) || 0 === c.length)
return Math.floor(Math.trueRandom() * (a - b + 1)) + b;
c = Array.force(c).map(function(a) {
return Math.trunc(a)
}).filter(function(c) {
return c >= b && c <= a
}).unique();
if (c.length === a - b + 1)
throw new RangeError("randomIntExcluding called with excluding all nums, no possible return value");
var e = void 0;
do
e = Math.randomInt(b, a);
while (c.includes(e));return e
}
Array.prototype.pickRandom || (Array.prototype.pickRandom = function(b, a) {
var c = this;
b = void 0 === b ? 1 : b;
a = void 0 === a ? [] : a;
if (0 === a.length && 1 === b)
return [this[Math.floor(Math.random() * this.length)]];
if (0 === a.length && b >= this.length)
return this.slice().shuffle();
a = a.map(function(a) {
return c.indexOf(a)
}).unique().filter(function(a) {
return -1 !== a
});
for (var e = [], h = 0; h < b; h++)
e.push(Math.randomInt(0, this.length - 1, [].concat($jscomp.arrayFromIterable(e), $jscomp.arrayFromIterable(a))));
return e.map(function(a) {
return c[a]
})
}
Array.prototype.shuffle || (Array.prototype.shuffle = function() {
for (var b = this.length, a, c; b; )
c = Math.randomInt(0, --b),
a = this[b],
this[b] = this[c],
this[c] = a;
return this
}
The game shouldn't suggest that homeless and outcast people are enemies who should be attacked.
...Unless you're also going to add a "morality" trait to the game that can lead players down different paths.
Currently running a Dungeon with multiple People is a pain, as the only coordination is via chat which is global for everyone. It would improve coordination when on the Dungeon Map you can see which mob is being targetted by.
It would also be great to see the actual Healthbars of other people inside a Dungeon (currently the bar reflect the health of the current player).
It would be great if a player could use PainAway on others to facilitate the role of a supporter/healer/buffer.
Currently
// Automatically scraps all weak equipments
Correction
// Automatically scraps all weak equipment
Currently
You have level up your MOLECULAR PRINT skill
Correction
You have leveled up your MOLECULAR PRINT skill
Or
You leveled up your MOLECULAR PRINT skill
Currently
Hi, CyberCode Online is still under heavy development, if you have any suggestion or constructive critics, they are very welcome.
Correction
Hi, CyberCode Online is still under heavy development, if you have any suggestions or constructive criticism, they are very welcome.
Currently
If you want to connect with other players, or there is something you want to talk to me about you can find me at CyberCode Online's Discrod Channel
Correction
If you want to connect with other players, or there is something you want to talk to me about you can find me at CyberCode Online's Discord Channel
Currently
(for bugs it's encourage to create a issue on our github page)
Correction
(for bugs and suggestions you are encouraged to create a issue on our github page)
Currently
TO DISCROD
Correction
TO DISCORD
Currently
*One of the most busy city in the nation,
*at this place, all sort of people gathers from around the planet.
Correction
*One of the most busy cities in the nation,
*at this place, all sorts of people gather from around the planet.
Add a console that can do many actions.
For example, type "primaryAttack" to attack, "escape" to escape.
Since even in the higher level dungeons you find Pain Away in crates, it'd be useful if there were a way to combine some number of them into a stronger potion/nanobot
Scrapping an item with a module attached has two bugs:
It shouldn't let you do it in the first place. An error should be generated that you have to unequip modules before scrapping.
If you don't do #1, then you should get tech scraps back for both the item AND the module. Currently, you only get 1 tech scrap, for the item itself.
It would be nice if there was more information available on what benefit there is to leveling secondary skills. Printing is pretty obviously but not immediately so. Medical/ammo/scavenge levels have no apparent benefit at all.
I think a good place to put this info would be comments on each level in Stats.ts.
When hovering equipment in the inventory, it should show a popup on hover comparing stats to the equipped slot.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.