From a6fd3a0f1d8622827489379d61d7386fc2d5f502 Mon Sep 17 00:00:00 2001 From: kinther Date: Sat, 20 Dec 2025 10:47:06 -0800 Subject: [PATCH] 5e-style skill addition --- src/class.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++ src/spell_parser.c | 16 ++++++++++++ src/spells.h | 15 +++++++++++ 3 files changed, 95 insertions(+) diff --git a/src/class.c b/src/class.c index 81a83cc..9aa560d 100644 --- a/src/class.c +++ b/src/class.c @@ -311,6 +311,9 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SPELL_ENCHANT_WEAPON, 5); SET_SKILL(ch, SPELL_CLONE, 5); SET_SKILL(ch, SKILL_UNARMED, 5); + SET_SKILL(ch, SKILL_ARCANA, 5); + SET_SKILL(ch, SKILL_HISTORY, 5); + SET_SKILL(ch, SKILL_INSIGHT, 5); break; case CLASS_CLERIC: @@ -346,6 +349,9 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SPELL_GROUP_HEAL, 5); SET_SKILL(ch, SPELL_REMOVE_CURSE, 5); SET_SKILL(ch, SKILL_SHIELD_USE, 5); + SET_SKILL(ch, SKILL_ACROBATICS, 5); + SET_SKILL(ch, SKILL_ARCANA, 5); + SET_SKILL(ch, SKILL_RELIGION, 5); break; case CLASS_ROGUE: @@ -359,6 +365,9 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_SHIELD_USE, 5); SET_SKILL(ch, SKILL_PIERCING_WEAPONS, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_ACROBATICS, 5); + SET_SKILL(ch, SKILL_DECEPTION, 5); + SET_SKILL(ch, SKILL_INVESTIGATION, 5); break; case CLASS_FIGHTER: @@ -372,6 +381,9 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_BLUDGEONING_WEAPONS, 5); SET_SKILL(ch, SKILL_SHIELD_USE, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_ATHLETICS, 5); + SET_SKILL(ch, SKILL_INTIMIDATION, 5); + SET_SKILL(ch, SKILL_SURVIVAL, 5); break; case CLASS_BARBARIAN: @@ -383,6 +395,8 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_PIERCING_WEAPONS, 5); SET_SKILL(ch, SKILL_BLUDGEONING_WEAPONS, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_ATHLETICS, 5); + SET_SKILL(ch, SKILL_INTIMIDATION, 5); break; case CLASS_RANGER: @@ -396,6 +410,11 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_PIERCING_WEAPONS, 5); SET_SKILL(ch, SKILL_SHIELD_USE, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_NATURE, 5); + SET_SKILL(ch, SKILL_ANIMAL_HANDLING, 5); + SET_SKILL(ch, SKILL_SURVIVAL, 5); + SET_SKILL(ch, SKILL_ATHLETICS, 5); + SET_SKILL(ch, SKILL_PERSUASION, 5); break; case CLASS_BARD: @@ -409,6 +428,11 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_PIERCING_WEAPONS, 5); SET_SKILL(ch, SKILL_SHIELD_USE, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_ACROBATICS, 5); + SET_SKILL(ch, SKILL_HISTORY, 5); + SET_SKILL(ch, SKILL_INVESTIGATION, 5); + SET_SKILL(ch, SKILL_SURVIVAL, 5); + SET_SKILL(ch, SKILL_STEALTH, 5); break; case CLASS_DRUID: @@ -421,6 +445,14 @@ void grant_class_skills(struct char_data *ch, bool reset) SET_SKILL(ch, SKILL_PIERCING_WEAPONS, 5); SET_SKILL(ch, SKILL_SHIELD_USE, 5); SET_SKILL(ch, SKILL_PERCEPTION, 5); + SET_SKILL(ch, SKILL_ACROBATICS, 5); + SET_SKILL(ch, SKILL_ARCANA, 5); + SET_SKILL(ch, SKILL_HISTORY, 5); + SET_SKILL(ch, SKILL_INSIGHT, 5); + SET_SKILL(ch, SKILL_INVESTIGATION, 5); + SET_SKILL(ch, SKILL_PERSUASION, 5); + SET_SKILL(ch, SKILL_RELIGION, 5); + SET_SKILL(ch, SKILL_SURVIVAL, 5); break; } } @@ -607,6 +639,9 @@ void init_spell_levels(void) spell_level(SPELL_ENCHANT_WEAPON, CLASS_SORCEROR, 1); spell_level(SPELL_CLONE, CLASS_SORCEROR, 1); spell_level(SKILL_UNARMED, CLASS_SORCEROR, 1); + spell_level(SKILL_ARCANA, CLASS_SORCEROR, 1); + spell_level(SKILL_HISTORY, CLASS_SORCEROR, 1); + spell_level(SKILL_INSIGHT, CLASS_SORCEROR, 1); /* CLERICS */ spell_level(SPELL_CURE_LIGHT, CLASS_CLERIC, 1); @@ -641,6 +676,9 @@ void init_spell_levels(void) spell_level(SPELL_GROUP_HEAL, CLASS_CLERIC, 1); spell_level(SPELL_REMOVE_CURSE, CLASS_CLERIC, 1); spell_level(SKILL_SHIELD_USE, CLASS_CLERIC, 1); + spell_level(SKILL_ACROBATICS, CLASS_CLERIC, 1); + spell_level(SKILL_ARCANA, CLASS_CLERIC, 1); + spell_level(SKILL_RELIGION, CLASS_CLERIC, 1); /* ROGUES */ spell_level(SKILL_PICK_LOCK, CLASS_ROGUE, 1); @@ -653,6 +691,9 @@ void init_spell_levels(void) spell_level(SKILL_PERCEPTION, CLASS_ROGUE, 1); spell_level(SKILL_SLEIGHT_OF_HAND, CLASS_ROGUE, 1); spell_level(SKILL_STEALTH, CLASS_ROGUE, 1); + spell_level(SKILL_ACROBATICS, CLASS_ROGUE, 1); + spell_level(SKILL_DECEPTION, CLASS_ROGUE, 1); + spell_level(SKILL_INVESTIGATION, CLASS_ROGUE, 1); /* FIGHTERS */ spell_level(SKILL_KICK, CLASS_FIGHTER, 1); @@ -665,6 +706,9 @@ void init_spell_levels(void) spell_level(SKILL_BLUDGEONING_WEAPONS, CLASS_FIGHTER, 1); spell_level(SKILL_SHIELD_USE, CLASS_FIGHTER, 1); spell_level(SKILL_PERCEPTION, CLASS_FIGHTER, 1); + spell_level(SKILL_ATHLETICS, CLASS_FIGHTER, 1); + spell_level(SKILL_INTIMIDATION, CLASS_FIGHTER, 1); + spell_level(SKILL_SURVIVAL, CLASS_FIGHTER, 1); /* BARBARIANS */ spell_level(SKILL_KICK, CLASS_BARBARIAN, 1); @@ -675,6 +719,8 @@ void init_spell_levels(void) spell_level(SKILL_PIERCING_WEAPONS, CLASS_BARBARIAN, 1); spell_level(SKILL_BLUDGEONING_WEAPONS, CLASS_BARBARIAN, 1); spell_level(SKILL_PERCEPTION, CLASS_BARBARIAN, 1); + spell_level(SKILL_ATHLETICS, CLASS_BARBARIAN, 1); + spell_level(SKILL_INTIMIDATION, CLASS_BARBARIAN, 1); /* RANGERS */ spell_level(SKILL_BANDAGE, CLASS_RANGER, 1); @@ -687,6 +733,11 @@ void init_spell_levels(void) spell_level(SKILL_PERCEPTION, CLASS_RANGER, 1); spell_level(SKILL_SLEIGHT_OF_HAND, CLASS_RANGER, 1); spell_level(SKILL_STEALTH, CLASS_RANGER, 1); + spell_level(SKILL_NATURE, CLASS_RANGER, 1); + spell_level(SKILL_ANIMAL_HANDLING, CLASS_RANGER, 1); + spell_level(SKILL_SURVIVAL, CLASS_RANGER, 1); + spell_level(SKILL_ATHLETICS, CLASS_RANGER, 1); + spell_level(SKILL_PERSUASION, CLASS_RANGER, 1); /* BARDS */ spell_level(SPELL_ARMOR, CLASS_BARD, 1); @@ -699,6 +750,11 @@ void init_spell_levels(void) spell_level(SKILL_SHIELD_USE, CLASS_BARD, 1); spell_level(SKILL_PERCEPTION, CLASS_BARD, 1); spell_level(SKILL_SLEIGHT_OF_HAND, CLASS_BARD, 1); + spell_level(SKILL_ACROBATICS, CLASS_BARD, 1); + spell_level(SKILL_HISTORY, CLASS_BARD, 1); + spell_level(SKILL_INVESTIGATION, CLASS_BARD, 1); + spell_level(SKILL_SURVIVAL, CLASS_BARD, 1); + spell_level(SKILL_STEALTH, CLASS_BARD, 1); /* DRUIDS */ spell_level(SPELL_DETECT_INVIS, CLASS_DRUID, 1); @@ -710,6 +766,14 @@ void init_spell_levels(void) spell_level(SKILL_PIERCING_WEAPONS, CLASS_DRUID, 1); spell_level(SKILL_SHIELD_USE, CLASS_DRUID, 1); spell_level(SKILL_PERCEPTION, CLASS_DRUID, 1); + spell_level(SKILL_ACROBATICS, CLASS_DRUID, 1); + spell_level(SKILL_ARCANA, CLASS_DRUID, 1); + spell_level(SKILL_HISTORY, CLASS_DRUID, 1); + spell_level(SKILL_INSIGHT, CLASS_DRUID, 1); + spell_level(SKILL_INVESTIGATION, CLASS_DRUID, 1); + spell_level(SKILL_PERSUASION, CLASS_DRUID, 1); + spell_level(SKILL_RELIGION, CLASS_DRUID, 1); + spell_level(SKILL_SURVIVAL, CLASS_DRUID, 1); } /* This is the exp given to implementors -- it must always be greater than the diff --git a/src/spell_parser.c b/src/spell_parser.c index da7edc3..d4ab840 100644 --- a/src/spell_parser.c +++ b/src/spell_parser.c @@ -938,4 +938,20 @@ void mag_assign_spells(void) { skillo(SKILL_STEALTH, "stealth"); skillo(SKILL_LISTEN, "listen"); skillo(SKILL_SLEIGHT_OF_HAND, "sleight of hand"); + skillo(SKILL_ACROBATICS, "acrobatics"); + skillo(SKILL_ANIMAL_HANDLING, "animal handling"); + skillo(SKILL_ARCANA, "arcana"); + skillo(SKILL_ATHLETICS, "athletics"); + skillo(SKILL_DECEPTION, "deception"); + skillo(SKILL_HISTORY, "history"); + skillo(SKILL_INSIGHT, "insight"); + skillo(SKILL_INTIMIDATION, "intimidation"); + skillo(SKILL_INVESTIGATION, "investigation"); + skillo(SKILL_MEDICINE, "medicine"); + skillo(SKILL_NATURE, "nature"); + skillo(SKILL_PERFORMANCE, "performance"); + skillo(SKILL_PERSUASION, "persuasion"); + skillo(SKILL_RELIGION, "religion"); + skillo(SKILL_SURVIVAL, "survival"); + } diff --git a/src/spells.h b/src/spells.h index 2b989e3..4d7f0ec 100644 --- a/src/spells.h +++ b/src/spells.h @@ -120,6 +120,21 @@ #define SKILL_STEALTH 148 /* Shared stealth skill for hide/sneak */ #define SKILL_LISTEN 149 /* Anchor for the listen affect */ #define SKILL_SLEIGHT_OF_HAND 150 /* Sleight of hand for palm/slip */ +#define SKILL_ACROBATICS 151 /* DEX */ +#define SKILL_ANIMAL_HANDLING 152 /* WIS */ +#define SKILL_ARCANA 153 /* INT */ +#define SKILL_ATHLETICS 154 /* STR */ +#define SKILL_DECEPTION 155 /* CHA */ +#define SKILL_HISTORY 156 /* INT */ +#define SKILL_INSIGHT 157 /* WIS */ +#define SKILL_INTIMIDATION 158 /* CHA */ +#define SKILL_INVESTIGATION 159 /* INT */ +#define SKILL_MEDICINE 160 /* WIS */ +#define SKILL_NATURE 161 /* INT */ +#define SKILL_PERFORMANCE 162 /* CHA */ +#define SKILL_PERSUASION 163 /* CHA */ +#define SKILL_RELIGION 164 /* INT */ +#define SKILL_SURVIVAL 165 /* WIS */ /* New skills may be added here up to MAX_SKILLS (200) */