blob: 808d16ddd42d6bb3f3fa372ab6f73fb3036250ca [file] [log] [blame]
// MorgenGrauen MUDlib
//
// new_skills.h -- Alle noetigen Defintionen fuer Skills (Faehigkeiten),
// Spells (Zaubersprueche) und Gilden.
//
// $Id: new_skills.h 8610 2014-01-06 20:59:13Z Zesstra $
#ifndef _NEW_SKILLS_H_
#define _NEW_SKILLS_H_
#include <combat.h>
#include <living/skill_attributes.h>
// ===== Aktuelle Version der Skills ====
#define CURRENT_SKILL_VERSION 2
// ===== Allgemeine Defines: =====
#define DEFAULT_GUILD "abenteurer"
#define GUILD_DIR "/gilden/"
#define GUILD_SAVEFILE "/etc/gildenmaster"
#define GUILDMASTER "/secure/gildenmaster"
#define SPELLBOOK_DIR "/spellbooks/"
#define MAX_ABILITY 10000
#define MAX_SKILLEARN 200
// ===== Moegliche Resultate eine Spells: =====
#define ERFOLG 1
#define MISSERFOLG -1
#define ABGEWEHRT 2
#define NICHT_ZUSTAENDIG -2
// ===== Properties des Gilden-Masters: =====
#define P_VALID_GUILDS "valid_guilds"
// ===== Properties der Gilde: ======
#define P_GUILD_SKILLS "guild_skills"
#define P_GUILD_RESTRICTIONS "guild_rest"
//bitte dieses Define auch in /scure/master/userinfo.c aendern...
#define P_GUILD_DEFAULT_SPELLBOOK "guild_sb"
#define P_GUILD_MALE_TITLES "guild_male_titles"
#define P_GUILD_FEMALE_TITLES "guild_female_titles"
#define P_GUILD_LEVELS "guild_levels"
#define P_GUILD_PREPAREBLOCK "guild_prepareblock"
#define P_GUILD_DEACTIVATE_SKILLS "guild_deactivate_skills"
// ===== Properties des Spellbooks: =====
#define P_SB_SPELLS "sb_spells"
// ===== Properties der Gilde UND des Spellbooks: =====
#define P_GLOBAL_SKILLPROPS "sm_global"
// ===== Properties des Spielers: =====
// #define P_GUILD "guild"
#define P_DEFAULT_GUILD "default_guild"
#define P_DEFENDERS "defenders"
#define P_GUILD_LEVEL "guild_level"
#define P_GUILD_RATING "guild_rating"
#define P_GUILD_TITLE "guild_title"
#define P_SUBGUILD_TITLE "subguild_title"
#define P_VISIBLE_SUBGUILD_TITLE "visible_subguild_title"
#define P_MAGIC_RESISTANCE_OFFSET "mag_res_offset"
#define P_NEWSKILLS "newskills"
#define P_NEXT_SPELL_TIME "next_spell"
#define P_PREPARED_SPELL "prepared_spell"
#define P_TMP_ATTACK_HOOK "attack_hook"
#define P_TMP_ATTACK_MOD "attack_mod"
#define P_TMP_DEFEND_HOOK "defend_hook"
#define P_TMP_DIE_HOOK "die_hook"
#define P_TMP_MOVE_HOOK "move_hook"
#define P_WEAPON_TEACHER "weapon_teacher"
#define P_SKILLSVERSION "p_lib_skillsversion"
// ===== Standard-Skills: =====
#define FIGHT(x) ("Fight_"+x)
#define SHOOT(x) ("Shoot_"+x)
#define SK_BOOZE "Booze"
#define SK_CARRY "CarrySkill"
#define SK_CASTING "Cast"
#define SK_DEFEND_OTHER "DefendOther"
#define SK_FIGHT "Fight"
#define SK_INFORM_DEFEND "InformDefend"
#define SK_MAGIC_ATTACK "MagicAttack"
#define SK_MAGIC_DEFENSE "MagicDefense"
#define SK_NIGHTVISION "Nightvision"
#define SK_SHOOT "Shoot"
#define SK_SPELL_DEFEND "SpellDefend"
#define SK_SWORDFIGHTING FIGHT(WT_SWORD)
#define SK_TWOHANDED "Bihand"
#define SK_WEAPONLESS FIGHT(WT_HANDS)
// ===== Skill Infos: =====
#define FACTOR(x) ("fac_"+x)
#define OFFSET(x) ("off_"+x)
#define SI_SKILLFUNC "si_func"
// Funktion, die aufgerufen wird
#define SI_CLOSURE "si_closure"
// Nur fuer den internen Gebrauch
// (Geschwindigkeitsoptimierung)
#define SI_SPELLBOOK "si_spellbook"
// Spellbook, in dem der Spell
// steht
#define SI_SPELLCOST "si_cost"
// Kosten des Spells
#define SI_TIME_MSG "time_msg"
// Die Meldung wird anstelle von
// "Du bist noch zu erschoepft
// von Deinem letzten Spruch."
// ausgegeben.
#define SI_SP_LOW_MSG "sp_low_msg"
// Die Meldung wird anstelle von
// "Du hast zu wenig Zauberpunkte
// fuer diesen Spruch."
// ausgegeben.
#define SI_PREPARE_MSG "si_prepare_msg"
#define SI_PREPARE_ABORT_MSG "si_prepare_abort_msg"
#define SI_PREPARE_BUSY_MSG "si_prepare_busy_msg"
// Meldungen fuer Spruch-
// vorbereitung, Abbruch und
// schon beschaeftigt
#define SI_NOMAGIC "si_nomagic"
// Prozentwert, mit dem P_NOMAGIC
// umgangen werden kann
#define SI_NOMAGIC_MSG "si_nomagic_msg"
// Meldung, die Anstelle von
// "Dein Zauberspruch verpufft
// im Nichts" ausgegeben werden
// soll.
#define SI_SPELLFATIGUE "si_fatigue"
// Erschoepfung - Zeit, in der
// keine weiteren Spells
// aufgerufen werden koennen
#define SI_X_SPELLFATIGUE "std:si:xfatigue"
#define SI_SKILLLEARN "si_learn"
// Lerngeschwindigkeit in 0.01%
// pro A_INT/2
#define SI_LEARN_ATTRIBUTE "si_learn_attribute"
// Wenn man nicht will, dass man in Abhaengigkeit von
// INT lernt
#define SI_NO_LEARN "si_no_learn"
// Wenn man (temporaer!) nicht will, dass dieser Skill gelernt wird.
// Muss von den Spellbooks beachtet werden.
// Sollte niemals im Spieler abgespeichert werden. Oder permanent in
// Gilde/Spellbook gesetzt sein. Sondern im Laufe einesr Nutzung in der jew.
// Kopie von sinfo gesetzt werden, die gerade genutzt wird.
#define SI_SKILLABILITY "si_abil"
// Faehigkeit, diesen Spruch zu
// benutzen
#define SI_SKILLARG "si_arg"
// Argumente, die uebergeben
// wurden
#define SI_SKILLRESTR_USE "si_restr_u"
// Beschraenkungen beim Gebrauch
#define SI_SKILLRESTR_LEARN "si_restr_l"
// Beschraenkungen beim Lernen
#define SI_SKILLINFO "si_info"
// Kurzer Informationstext
#define SI_SKILLINFO_LONG "si_info_l"
// Langer Informationstext
#define SI_SKILLDAMAGE "si_damage"
// Schaden
#define SI_SKILLDAMAGE_BY_ROW "si_damage_by_row"
// Schaden durch Teamreihen
#define SI_SKILLDAMAGE_TYPE "si_damtyp"
// Art des Schadens
#define SI_SKILLDAMAGE_MSG "si_dammsg"
// Meldung die anstelle einer
// Waffe kommen soll
#define SI_SKILLDAMAGE_MSG2 "si_dammsg2"
// dito fuer den Text fuer
// andere im Raum
#define SI_SPELL "si_spell"
// Spell, mit dem angegriffen
// wurde
#define SI_COLLATERAL_DAMAGE "si_collateral_damage"
// Schadensanteil bei Flaechen-
// spells, den Freunde abbekommen,
// in Prozent
#define SI_NUMBER_ENEMIES "si_num_enemies"
// Anzahl Feinde bei
// Flaechenspruch
#define SI_NUMBER_FRIENDS "si_num_friends"
// Anzahl Freunde bei
// Flaechenspruch
#define SI_DISTANCE "si_distance"
// Entfernung
#define SI_WIDTH "si_width"
// Breite des Flaechenangriffs
#define SI_DEPTH "si_depth"
// Tiefe des Flaechenangriffs
#define SI_INHERIT "si_inherit"
// Skill, von dem etwas
// uebernommen werden soll
#define SI_DIFFICULTY "si_difficulty"
// Wert, der die Obergrenze der
// Faehigkeit abgrenzt
#define SI_LASTLIGHT "si_lastlight"
// Fuer Nachtsicht: Wann hat
// der Spieler zum letzten mal
// Licht gesehen.
#define SI_SKILLHEAL "si_heal"
// Heilung
#define SI_USR "si_usr"
// selbst definierte Infos
#define SI_TESTFLAG "si_testflag"
// Testflag
#define SI_GUILD "si_guild"
// Gilde, falls Auswahl aus
// mehreren moeglich
#define SI_ENEMY "si_enemy"
// Feind bei Kampfspruechen
#define SI_FRIEND "si_friend"
// Der zu verteidigende Freund
// bei DefendOther und
// InformDefend
#define SI_MAGIC_TYPE "si_magic_type"
// Von was fuer einer Art ist
// die Magie (s.u.)
#define SI_PREPARE_TIME "si_prepare_time"
// Zeit die zur Vorbereitung
// benoetigt wird.
#define SI_ATTACK_BUSY_MSG "si_attack_busy_msg"
// Meldung, wenn der Spieler zu
// beschaeftigt ist
#define SI_NO_ATTACK_BUSY "si_no_attack_busy"
// Wenn der Spell nicht als
// Taetigkeit zaehlen/gezaehlt
// werden soll, kann man hier
// NO_ATTACK_BUSY[_SET|_QUERY]
// (s.u.) setzen
#define SI_ATTACK_BUSY_AMOUNT "si_attack_busy_amount"
// Der Spell hat ein gewisses
// AttackBusy, aber das weicht
// vom Standardwert 1 ab. Der
// Wert kann hier gesetzt
// werden.
#define SI_LAST_USE "si_last_use"
// Letzte benutzung eines
// Skills (fuer Rassenskills)
#define SI_LEARN_PROB "si_learn_prob"
// Lernwahrscheinlichkeit
// (fuer Rassenskills)
#define SI_SKILLDURATION "si_duration"
// Wie soll wird der Skill anhalten?
// (fuer Spells mit einer Dauer)
// ===== Parameter fuer Spell-Mapping: =====
#define SP_NAME "sp_name"
// Name des Spells
#define SP_SHOW_DAMAGE "sp_showdamage"
// Treffermeldung soll gezeigt
// werden.
#define SP_REDUCE_ARMOUR "sp_reduce_ac"
// AC soll Typabhaengig
// reduziert werden.
#define SP_PHYSICAL_ATTACK "sp_physical"
// Koerperlicher Angriff
#define SP_RECURSIVE "sp_recursive"
// Rekursionen
#define SP_NO_ENEMY "no_enemy"
// Ist kein richtiger Angriff
#define SP_NO_ACTIVE_DEFENSE "sp_no_active_defense"
// Es ist keine aktive Abwehr erwuenscht
#define SP_GLOBAL_ATTACK "sp_global_attack"
// Ist Flaechenangriff
// ===== Skill Restrictions: =====
#define SR_FUN "restr_fun"
// Funktion, die weitere
// Einschraenkungen prueft
#define SR_EXCLUDE_RACE "restr_race_ex"
// Ausgeschlossene Rassen
#define SR_INCLUDE_RACE "restr_race_in"
// Eingeschlossene Rassen
#define SR_EXCLUDE_GUILD "restr_guild_ex"
// Ausgeschlossene Gilden
#define SR_INCLUDE_GUILD "restr_guild_in"
// Eingeschlossene Gilden
#define SR_GOOD "restr_good"
// Align <
#define SR_BAD "restr_bad"
// Align >
#define SR_FREE_HANDS "restr_hands"
// Benoetigte freie Haende
#define SR_SEER "restr_seer"
// Muss Seher sein
#define SR_MIN_SIZE "min_size"
// Mindestgroesse
#define SR_MAX_SIZE "max_size"
// Maximalgroesse
#define SR_PROP "restr_properties"
// Werte beliebiger Properties
#define SR_QUEST "restr_quests"
// Quest bestanden
#define SR_MINIQUEST "restr_miniquests"
// Miniquest geloest
// ===== Skill Modifier: =====
#define SM_RACE "modify_race"
// Rassenspezifische
// Besonderheiten
// ===== Fuer das Attack-Busy-Handling: =====
#define NO_ATTACK_BUSY_SET 0x001
#define NO_ATTACK_BUSY_QUERY 0x002
#define NO_ATTACK_BUSY 0x003
// ===== Magie-Arten: =====
#define MT_ANGRIFF "mt_angriff"
#define MT_BEHERRSCHUNG "mt_beherrschung"
#define MT_BESCHWOERUNG "mt_beschwoerung"
#define MT_BEWEGUNG "mt_bewegung"
#define MT_CREATION "mt_creation"
#define MT_HEILUNG "mt_heilung"
#define MT_HELLSICHT "mt_hellsicht"
#define MT_ILLUSION "mt_illusion"
#define MT_PSYCHO "mt_psycho"
#define MT_SAKRAL "mt_sakral"
#define MT_SCHUTZ "mt_schutz"
#define MT_VERWANDLUNG "mt_verwandlung"
#define MT_MISC "mt_misc"
// ===== Defines fuer FindGroup() =====
#define FG_ENEMIES -1
#define FG_FRIENDS 1
#define FG_ALL 0
// ======== OBSOLETE Properties / Defines =============
// Prop wird nicht mehr genutzt, ist aber noch fuer /std/player/base.c noetig,
// um den SAVE-Status in den Spieler-Props zu loeschen.
#define P_GUILD_PREVENTS_RACESKILL "guild_prevents_raceskill"
#endif