Recent posts

#1
Code Discussion / Re: Suggestion: Make it so you...
Last post by Roon - Today at 06:01:09 PM
Quote from: Pariah on Today at 03:07:39 PMYeah but let's assume for a second that stats run in a playable range of 1-10 for humans and lets say that we are given 20 points to split between those four for humans.

All that would happen is people would just start experimenting to figure out the best min-max allocation and once discovered, using it every time.  You'd literally see six fighter type characters out of X player that all had the same stat spread.

That would still be better than the current system. I'd rather have a game where a lot of players pick what they think works best (and judging by the countless discussions about this, there's absolutely no consensus about what's best) than one where characters are created either amazing, mediocre or terrible, and stay that way forever, based on blind luck. The idea of min-maxed stat optimization is far less pernicious than what we have now where you can take two characters of the exact same race/class/age/whatever, and then one has AI/EX/EG/VG and the other has VG/G/AA/BA. That's a shockingly terrible stat system in a game like this where conflict between PCs is a central theme.

Fortunately for everyone, there's no need for a crass points-buy system ala D&D. A system where people tailor their stats to their exact specifications is not the only alternative to the current RNG fiesta. Shadows of Isildur came up with a much better system over twenty years ago: characters have a fixed pool of total stats, then you pick the order you want them in, and the game rolls some dice that determine the final result. Since the parts always add up to the same sum, no character is truly shafted or gifted. Maybe Bob didn't get as high a number in his first-priority stat as Steve did, but then his second priority isn't as low, and so on. Plenty of room for characters to be different, but you never get saddled with a character that's just bad, or one that has unbeatable godlike stats that lets you be way more powerful than if you hadn't been so lucky.

Stats make too much of a difference to be as random as they are. No amount of rerolls will fix this problem. The solution is simple and doesn't require changes to any other aspect of the code. It has been proven to work well on other RPIs and completely solved the issue of stats without resorting to something as unpalatable as a points-buy system. All this change would do is eliminate the unfairness of characters that are way below or above par.

#2
Code Discussion / Re: Suggestion: Make it so you...
Last post by Pariah - Today at 04:31:04 PM
I mean, the current system "Works" just like the Karma system "Works".

Not perfect by any means but functional.
#3
Code Discussion / Re: Suggestion: Make it so you...
Last post by Riev - Today at 04:14:17 PM
My thoughts:

Saying "most people want" is tough to prove, because the game's players fluctuate between 80 and 180 players at a given time. The GDB and Discord are home only to the most vocal.

Wanting the system to change is perfectly fine, but understand that no matter HOW many people want it to change that it isn't the Players' game, it is the Staff's game.

I'm fine with the system how it is, but over time it has lost so much focus on storytelling and roleplay that the most vocal of the playerbase seems to want to have every coded advantage so they are on "equal footing" with everyone else. Without such a focus on the story of the game, all Arm has left is being the new Grudash or THG.

Also, the new changes to stats using ceiling() will make a lot of difference in my opinion. No more will you need to age up 10 years to finally roll enough to get +1 strength, only to then fall in the bracket where it falls back to .99 and you lose it.
#4
Code Discussion / Re: Suggestion: Make it so you...
Last post by eska - Today at 03:22:39 PM
I don't really get why there is such a high need for changing the stat system. I remember suiciding a PC because of low stat-rolls when I was still a noob to Arm. But as years passed, I realized that the game needs all clever and stupid, strong and weak, agile and clumsy, tough and fragile.

Quote from: Windstorm on April 22, 2024, 05:46:08 PMIt's your birthday! You have just turned 24.
You can now hold no more than four limes.


Arm already does this, as you reach some milestones, your stats change. When you grow old, your strength reduces and wisdom increases.  Though I am not sure about at what age that happens.
#5
Code Discussion / Re: Suggestion: Make it so you...
Last post by Cowboy - Today at 03:14:28 PM
I think the current system works well enough.  I like the idea that someone might always be better than you are and sometimes you might just be the better one.  The old Luirs pit fights always brought out the best of the best mundane fighters. I do not want to see all cookie cutter clones, with the best stats, simply by typing a few numbers.
#6
Code Discussion / Re: Suggestion: Make it so you...
Last post by Pariah - Today at 03:07:39 PM
Quote from: Kavrick on Today at 02:50:53 PM
Quote from: Pariah on Today at 02:38:11 PMSo changing the system of stats would essentially be a total rewrite, then after you got stats done, you'd have to find everything that pulled from that old code of stats that no longer existed and fix those.  Let's say that every weapon skill, every offense/defense skill and magick all pull off the stats basics, that's basically re-writing the whole game when it's all said and done.
Oh I know a learning-by-doing stat system would be a much bigger task, but I feel like switching from random stats at creation to non-random stats at creation wouldn't be such a massive task.

Yeah but let's assume for a second that stats run in a playable range of 1-10 for humans and lets say that we are given 20 points to split between those four for humans.

All that would happen is people would just start experimenting to figure out the best min-max allocation and once discovered, using it every time.  You'd literally see six fighter type characters out of X player that all had the same stat spread.

Now I personally don't really care, but I think that's the hesitation point right there.  People will just game the system.  One thing I'm guilty of is once they instituted feed code, I literally will feed my beetle/sunlon/whatever to full every single day I go out, why?  Because it makes them better and you never know when you're gonna get sidetracked or stuck outdoors and need that extra 10 rooms of running or such.

So if I had to guess that's why they are against us assigning stats outright.
#7
Code Discussion / Re: Suggestion: Make it so you...
Last post by Kavrick - Today at 02:50:53 PM
Quote from: Pariah on Today at 02:38:11 PMSo changing the system of stats would essentially be a total rewrite, then after you got stats done, you'd have to find everything that pulled from that old code of stats that no longer existed and fix those.  Let's say that every weapon skill, every offense/defense skill and magick all pull off the stats basics, that's basically re-writing the whole game when it's all said and done.
Oh I know a learning-by-doing stat system would be a much bigger task, but I feel like switching from random stats at creation to non-random stats at creation wouldn't be such a massive task.
#8
Code Discussion / Re: Suggestion: Make it so you...
Last post by Pariah - Today at 02:38:11 PM
So below is a super rudimentary learn by doing with the stats of strength, wisdom, endurance and agility in Javascript.

So that whole bit of code, which I'm sure is 500X less than the rats nest that is arm, would have to be changed based on if stats or were flexible in how they are given.

Changing one thing would break another and cause you to have to re-write the whole thing.

So changing the system of stats would essentially be a total rewrite, then after you got stats done, you'd have to find everything that pulled from that old code of stats that no longer existed and fix those.  Let's say that every weapon skill, every offense/defense skill and magick all pull off the stats basics, that's basically re-writing the whole game when it's all said and done.

So that's why I'm not really pro rewrite or add point system, but I am pro improve stats throughout play, because if you have 4 in agility and now you change it to 5 in agility, that in itself doesn't break the code as it currently works.  But changing the whole system would require an arduous amount of work.

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

// Skill class representing individual skills
class Skill {
    private String name;
    private int level;
    private int cooldown;
    private boolean isOnCooldown;

    public Skill(String name) {
        this.name = name;
        this.level = 1;
        this.cooldown = 0;
        this.isOnCooldown = false;
    }

    public String getName() {
        return name;
    }

    public int getLevel() {
        return level;
    }

    public int getCooldown() {
        return cooldown;
    }

    public boolean isOnCooldown() {
        return isOnCooldown;
    }

    public void levelUp() {
        level++;
        System.out.println(name + " has leveled up to " + level);
    }

    public void startCooldown(int cooldownTime) {
        isOnCooldown = true;
        Timer cooldownTimer = new Timer();
        cooldownTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                isOnCooldown = false;
                cooldownTimer.cancel();
            }
        }, cooldownTime * 1000); // Convert cooldown to milliseconds
        System.out.println(name + " is now on cooldown for " + cooldownTime + " seconds");
    }
}

// Player class representing a player in the game
class Player {
    private String name;
    private int strength;
    private int wisdom;
    private int agility;
    private int endurance;
    private Map<String, Skill> skills;

    public Player(String name, int strength, int wisdom, int agility, int endurance) {
        this.name = name;
        this.strength = strength;
        this.wisdom = wisdom;
        this.agility = agility;
        this.endurance = endurance;
        this.skills = new HashMap<>();
    }

    // Method to roll stats randomly
    private int rollStat() {
        Random random = new Random();
        return random.nextInt(5) + 1; // Generating random number between 1 to 5
    }

    // Method to learn a new skill
    public void learnSkill(String skillName) {
        Skill skill = new Skill(skillName);
        skills.put(skillName, skill);
        System.out.println(name + " has learned " + skillName);
    }

    // Method to improve a skill through learning by doing
    public void improveSkill(String skillName) {
        Skill skill = skills.get(skillName);
        if (skill != null) {
            int roll = rollStat(); // Roll for skill improvement
            if (roll <= wisdom - (5 - skill.getLevel())) {
                skill.levelUp();
            } else {
                System.out.println(name + " failed to improve " + skillName);
            }
        } else {
            System.out.println(name + " does not have the skill " + skillName);
        }
    }

    // Method to use a skill
    public void useSkill(String skillName) {
        Skill skill = skills.get(skillName);
        if (skill != null && !skill.isOnCooldown()) {
            int cooldownTime = (wisdom * 3 * 60) + ((5 - wisdom) * 10 * 60); // Cooldown calculation based on wisdom
            skill.startCooldown(cooldownTime);
        } else if (skill != null && skill.isOnCooldown()) {
            System.out.println(name + "'s " + skillName + " is still on cooldown");
        } else {
            System.out.println(name + " does not have the skill " + skillName);
        }
    }

    // Getters for player attributes
    public String getName() {
        return name;
    }

    public int getStrength() {
        return strength;
    }

    public int getWisdom() {
        return wisdom;
    }

    public int getAgility() {
        return agility;
    }

    public int getEndurance() {
        return endurance;
    }
}

public class MUDGame {
    public static void main(String[] args) {
        // Roll stats for the player
        Random random = new Random();
        int strength = random.nextInt(5) + 1;
        int wisdom = random.nextInt(5) + 1;
        int agility = random.nextInt(5) + 1;
        int endurance = random.nextInt(5) + 1;

        // Create a player with rolled stats
        Player player1 = new Player("Player1", strength, wisdom, agility, endurance);

        // Player1 learns some skills
        player1.learnSkill("Combat");
        player1.learnSkill("Magic");

        // Player1 improves their skills
        player1.improveSkill("Combat");
        player1.improveSkill("Magic");

        // Player1 tries to use skills
        player1.useSkill("Combat");
        player1.useSkill("Combat"); // Skill is still on cooldown
        player1.useSkill("NonExistentSkill"); // Trying to use a skill not learned
    }
}
#9
Code Discussion / Re: Suggestion: Make it so you...
Last post by Kavrick - Today at 02:13:08 PM
Quote from: AKawaiiBear on Today at 01:55:40 PMi think everyone (even staff) wants a point buy system but god have mercy on the poor soul who actually tries to make it happen on that ancient spaghetti code

The only person I've seen comment about it was halaster and he seemed pretty against the idea. I don't really know what the code looks like so it's hard to comment, but I've also seen an entire codebase written during the time Armageddon was down so it's a little hard to believe sometimes? Like stat allocation during character creation really shouldn't be connected to too many systems based on what code knowledge I do have of similar games.
#10
Code Discussion / Re: Suggestion: Make it so you...
Last post by AKawaiiBear - Today at 01:55:40 PM
rewriting the stat system from the ground up to be point-buy would be a herculean task since so many things depend on it
adding more rerolls would be quite simple to do since the reroll code is already done, which is why i suggested it, it's something someone could feasibly do in a few hours

i think everyone (even staff) wants a point buy system but god have mercy on the poor soul who actually tries to make it happen on that ancient spaghetti code