Recent posts

#1
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.
#2
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
    }
}
#3
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.
#4
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
#5
Code Discussion / Re: Suggestion: Make it so you...
Last post by Pariah - Today at 01:15:48 PM
To get any type of large change, you need to get some member of staff to want it too, then hope they can convince Halaster, Brokkr or Usiku that it has merit enough to do it.

Shit rolls downhill but takes someone with enough oomph to get it to the top of the hill first to even be considered.
#6
General Discussion / Re: Seasons Q&A
Last post by Pariah - Today at 01:13:33 PM
Quote from: Fredd on Today at 12:41:36 PMI was just wondering when we'de see the sponsored roles posted. I got me a couple concepts I'de like to pitch.
That was sorta what I was hinting at too.  I'd rather have someone have extra time to come up with something they like and will play then someone to just slap some shit together and toss it in the hopper with little to no thought.
#7
General Discussion / Re: Seasons Q&A
Last post by Fredd - Today at 12:41:36 PM
I was just wondering when we'de see the sponsored roles posted. I got me a couple concepts I'de like to pitch.
#8
Code Discussion / Re: Suggestion: Make it so you...
Last post by Kavrick - Today at 11:43:04 AM
Quote from: Patuk on Today at 11:03:51 AMI'm with you on the point buy thing though. Absolutely.
It's kinda a shame that despite most people wanting some sort of array or point-buy system, it's not really going to happen unless the developers want it. Random stats is the most unsavory part of Armaggedon, and I really don't think there's any decent justification in it when pretty much every other modern rpg has stopped using random stats years ago.
#9
Code Discussion / Re: Suggestion: Make it so you...
Last post by Patuk - Today at 11:03:51 AM
Quote from: Abaddon on Today at 04:21:43 AM
Quote from: FantasyWriter on April 24, 2024, 09:16:29 AMRandom rolls would be way OOC for a developed character, IMO.

Alternate suggestion: Be able to trade one stat point for another per every six RL months if if you have played for 10 days played to reflect what your character has been doing over the past three IG years.

Been lifting weights and training every day and getting drunk all night -1 wisdom +1 str or agil.

Former labor slave who is now a desert wanderer? -1 str +1 end

Retired soldier who has shifted to being a Templar's advisor? -1 end +1 wis



Every six RL months? Isn't that the scope of an entire Season? You're telling me I'd need to spend the entire Season on one character just to get +1 to my strength?

Just make a train-by-skilling or point-buy system like an actually normal RPG. I'm begging you guys.

No, the first season's length is apparently slated to be three years.

I'm with you on the point buy thing though. Absolutely.
#10
General Discussion / Re: Seasons Q&A
Last post by eska - Today at 09:53:33 AM
Quote from: Riev on May 19, 2024, 03:13:32 PMYes, they plan on having a full week prior to the launch date to ensure the sponsored roles are ready.

What that looks like, they haven't said (whether its them in game and set up a week ahead of time, or CHOSEN a week ahead of time... or just applied for a week ahead of time....)

I guess what Pariah meant to ask was if we can get a glimpse of the sponsored roles and rolecalls mentioned in this thread beforehand, so that people can prepare for those rolls.

Quote from: Pariah on May 19, 2024, 02:00:30 PMSo it might be a good idea to get those roles fleshed out and good to go well in advance.

IMO two weeks is enough to flesh out a concept for a sponsored role. I already have a couple concepts in my mind, which I can use for different roles.
We will all have some time to improve our concepts for the sponsored roles and rolecalls. I believe once we get the announcements, people will apply to them with some strong character concepts.