crazedsanity / cs-battletrack

PHP-Based web application for tracking data in traditional paper-and-pencil role playing games.
http://www.crazedsanity.com/projects/cs-battletrack
Other
1 stars 1 forks source link

System-Defined Skills #31

Closed crazedsanity closed 10 years ago

crazedsanity commented 11 years ago

Instead of using free-form skill names, they should be in a system-defined list. DM's or admins (or maybe both) should be able to add/update/remove them. Skills from existing characters should be converted to use them (consider creating the master list from existing character sheets if they exist, but use a pre-defined list otherwise). These skills should have a bit indicating that it can be used untrained.

crazedsanity commented 10 years ago

The SQL for basic conversion would be something like:

CREATE TABLE csbt_skill_table (
   skill_id serial NOT NULL PRIMARY KEY,
   skill_name text NOT NULL UNIQUE,
   is_untrained bool NOT NULL DEFAULT false,
   has_suffix bool NOT NULL DEFAULT false
);
INSERT INTO csbt_skill_table
    SELECT distinct(skill_name) FROM csbt_character_skill_table ORDER BY skill_name;
ALTER TABLE csbt_character_skill_table ADD COLUMN skill_id integer;
UPDATE csbt_character_skill_table AS cs SET skill_id=s.skill_id FROM
   (
      SELECT s.skill_id, s.skill_name FROM csbt_skill_table AS s
   )
   WHERE cs.skill_name=s.skill_name;
ALTER TABLE csbt_character_skill_table DROP COLUMN skill_name;

There should be an administration page for adding new skills as well, or some way for adding (and deleting) these skills (should be in another request).

crazedsanity commented 10 years ago

Also, there should be a way to "group" them into things like "3.5" or some such... so that when a character sheet is created, there's a way to determine what the default set of skills would be. Defining a default set of attributes and such would be nice, as well, so that other systems could be supported.

crazedsanity commented 10 years ago

Upon further consideration, I think this would be a lot of work with not a lot of benefit. It might be more useful in the future, but right now there's too much else to do. Closing.