blob: eba9411f9d138d44940b60dce079a809c97654fa [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2//
3// new_skills.h -- Alle noetigen Defintionen fuer Skills (Faehigkeiten),
4// Spells (Zaubersprueche) und Gilden.
5//
6// $Id: new_skills.h 8610 2014-01-06 20:59:13Z Zesstra $
7
8#ifndef _NEW_SKILLS_H_
9#define _NEW_SKILLS_H_
10
11#include <combat.h>
12#include <living/skill_attributes.h>
13
14// ===== Aktuelle Version der Skills ====
15#define CURRENT_SKILL_VERSION 2
16
17// ===== Allgemeine Defines: =====
18
19#define DEFAULT_GUILD "abenteurer"
20#define GUILD_DIR "/gilden/"
21#define GUILD_SAVEFILE "/etc/gildenmaster"
22#define GUILDMASTER "/secure/gildenmaster"
23#define SPELLBOOK_DIR "/spellbooks/"
24
25#define MAX_ABILITY 10000
26#define MAX_SKILLEARN 200
27
28// ===== Moegliche Resultate eine Spells: =====
29
30#define ERFOLG 1
31#define MISSERFOLG -1
32#define ABGEWEHRT 2
Bugfixdd8ce3f2016-08-13 19:54:02 +020033#define NICHT_ZUSTAENDIG -2
MG Mud User88f12472016-06-24 23:31:02 +020034
35// ===== Properties des Gilden-Masters: =====
36
37#define P_VALID_GUILDS "valid_guilds"
38
39// ===== Properties der Gilde: ======
40
41#define P_GUILD_SKILLS "guild_skills"
42#define P_GUILD_RESTRICTIONS "guild_rest"
43//bitte dieses Define auch in /scure/master/userinfo.c aendern...
44#define P_GUILD_DEFAULT_SPELLBOOK "guild_sb"
45#define P_GUILD_MALE_TITLES "guild_male_titles"
46#define P_GUILD_FEMALE_TITLES "guild_female_titles"
47#define P_GUILD_LEVELS "guild_levels"
48#define P_GUILD_PREPAREBLOCK "guild_prepareblock"
49#define P_GUILD_DEACTIVATE_SKILLS "guild_deactivate_skills"
50
51// ===== Properties des Spellbooks: =====
52
53#define P_SB_SPELLS "sb_spells"
54
55// ===== Properties der Gilde UND des Spellbooks: =====
56#define P_GLOBAL_SKILLPROPS "sm_global"
57
58// ===== Properties des Spielers: =====
59
60// #define P_GUILD "guild"
61#define P_DEFAULT_GUILD "default_guild"
62#define P_DEFENDERS "defenders"
63#define P_GUILD_LEVEL "guild_level"
64#define P_GUILD_RATING "guild_rating"
65#define P_GUILD_TITLE "guild_title"
66#define P_SUBGUILD_TITLE "subguild_title"
67#define P_VISIBLE_SUBGUILD_TITLE "visible_subguild_title"
68#define P_MAGIC_RESISTANCE_OFFSET "mag_res_offset"
69#define P_NEWSKILLS "newskills"
70#define P_NEXT_SPELL_TIME "next_spell"
71#define P_PREPARED_SPELL "prepared_spell"
72#define P_TMP_ATTACK_HOOK "attack_hook"
73#define P_TMP_ATTACK_MOD "attack_mod"
74#define P_TMP_DEFEND_HOOK "defend_hook"
75#define P_TMP_DIE_HOOK "die_hook"
76#define P_TMP_MOVE_HOOK "move_hook"
77#define P_WEAPON_TEACHER "weapon_teacher"
78#define P_SKILLSVERSION "p_lib_skillsversion"
79
80// ===== Standard-Skills: =====
81
82#define FIGHT(x) ("Fight_"+x)
83#define SHOOT(x) ("Shoot_"+x)
84#define SK_BOOZE "Booze"
85#define SK_CARRY "CarrySkill"
86#define SK_CASTING "Cast"
87#define SK_DEFEND_OTHER "DefendOther"
88#define SK_FIGHT "Fight"
89#define SK_INFORM_DEFEND "InformDefend"
Zesstra64bb4342021-04-29 20:29:19 +020090// SK_MAGIC_ATTACK ersetzt den waffenlosen Angriff auf "magische Art und
91// Weise"
MG Mud User88f12472016-06-24 23:31:02 +020092#define SK_MAGIC_ATTACK "MagicAttack"
Zesstra64bb4342021-04-29 20:29:19 +020093// SK_MAGIC_DEFENSE wird im Defend ausgewertet und gibt einen
94// Verteidigungsbonus auf "magische Art und Weise"
MG Mud User88f12472016-06-24 23:31:02 +020095#define SK_MAGIC_DEFENSE "MagicDefense"
96#define SK_NIGHTVISION "Nightvision"
97#define SK_SHOOT "Shoot"
Zesstra64bb4342021-04-29 20:29:19 +020098// SK_SPELL_DEFEND wird als Spellabwehr bei Angriffen durch die Funktion
99// SpellDefend() im Living auswertet.
MG Mud User88f12472016-06-24 23:31:02 +0200100#define SK_SPELL_DEFEND "SpellDefend"
101#define SK_SWORDFIGHTING FIGHT(WT_SWORD)
102#define SK_TWOHANDED "Bihand"
103#define SK_WEAPONLESS FIGHT(WT_HANDS)
104
105// ===== Skill Infos: =====
106
107#define FACTOR(x) ("fac_"+x)
108#define OFFSET(x) ("off_"+x)
109
110#define SI_SKILLFUNC "si_func"
111 // Funktion, die aufgerufen wird
112
113#define SI_CLOSURE "si_closure"
114 // Nur fuer den internen Gebrauch
115 // (Geschwindigkeitsoptimierung)
116
117#define SI_SPELLBOOK "si_spellbook"
118 // Spellbook, in dem der Spell
119 // steht
120
121#define SI_SPELLCOST "si_cost"
122 // Kosten des Spells
123
124#define SI_TIME_MSG "time_msg"
125 // Die Meldung wird anstelle von
126 // "Du bist noch zu erschoepft
127 // von Deinem letzten Spruch."
128 // ausgegeben.
129
130#define SI_SP_LOW_MSG "sp_low_msg"
131 // Die Meldung wird anstelle von
132 // "Du hast zu wenig Zauberpunkte
133 // fuer diesen Spruch."
134 // ausgegeben.
135
136#define SI_PREPARE_MSG "si_prepare_msg"
137#define SI_PREPARE_ABORT_MSG "si_prepare_abort_msg"
138#define SI_PREPARE_BUSY_MSG "si_prepare_busy_msg"
139 // Meldungen fuer Spruch-
140 // vorbereitung, Abbruch und
141 // schon beschaeftigt
142
143#define SI_NOMAGIC "si_nomagic"
144 // Prozentwert, mit dem P_NOMAGIC
145 // umgangen werden kann
146
147#define SI_NOMAGIC_MSG "si_nomagic_msg"
148 // Meldung, die Anstelle von
149 // "Dein Zauberspruch verpufft
150 // im Nichts" ausgegeben werden
151 // soll.
152
153#define SI_SPELLFATIGUE "si_fatigue"
154 // Erschoepfung - Zeit, in der
155 // keine weiteren Spells
156 // aufgerufen werden koennen
157#define SI_X_SPELLFATIGUE "std:si:xfatigue"
158
159#define SI_SKILLLEARN "si_learn"
160 // Lerngeschwindigkeit in 0.01%
161 // pro A_INT/2
162
163#define SI_LEARN_ATTRIBUTE "si_learn_attribute"
164 // Wenn man nicht will, dass man in Abhaengigkeit von
165 // INT lernt
166
167#define SI_NO_LEARN "si_no_learn"
168 // Wenn man (temporaer!) nicht will, dass dieser Skill gelernt wird.
169 // Muss von den Spellbooks beachtet werden.
170 // Sollte niemals im Spieler abgespeichert werden. Oder permanent in
171 // Gilde/Spellbook gesetzt sein. Sondern im Laufe einesr Nutzung in der jew.
172 // Kopie von sinfo gesetzt werden, die gerade genutzt wird.
173
174#define SI_SKILLABILITY "si_abil"
175 // Faehigkeit, diesen Spruch zu
176 // benutzen
177
178#define SI_SKILLARG "si_arg"
179 // Argumente, die uebergeben
180 // wurden
181
182#define SI_SKILLRESTR_USE "si_restr_u"
183 // Beschraenkungen beim Gebrauch
184
185#define SI_SKILLRESTR_LEARN "si_restr_l"
186 // Beschraenkungen beim Lernen
187
188#define SI_SKILLINFO "si_info"
189 // Kurzer Informationstext
190
191#define SI_SKILLINFO_LONG "si_info_l"
192 // Langer Informationstext
193
194#define SI_SKILLDAMAGE "si_damage"
195 // Schaden
196
197#define SI_SKILLDAMAGE_BY_ROW "si_damage_by_row"
198 // Schaden durch Teamreihen
199
200#define SI_SKILLDAMAGE_TYPE "si_damtyp"
201 // Art des Schadens
202
203#define SI_SKILLDAMAGE_MSG "si_dammsg"
204 // Meldung die anstelle einer
205 // Waffe kommen soll
206
207#define SI_SKILLDAMAGE_MSG2 "si_dammsg2"
208 // dito fuer den Text fuer
209 // andere im Raum
210
211#define SI_SPELL "si_spell"
212 // Spell, mit dem angegriffen
213 // wurde
214
215#define SI_COLLATERAL_DAMAGE "si_collateral_damage"
216 // Schadensanteil bei Flaechen-
217 // spells, den Freunde abbekommen,
218 // in Prozent
219
220#define SI_NUMBER_ENEMIES "si_num_enemies"
221 // Anzahl Feinde bei
222 // Flaechenspruch
223
224#define SI_NUMBER_FRIENDS "si_num_friends"
225 // Anzahl Freunde bei
226 // Flaechenspruch
227
228#define SI_DISTANCE "si_distance"
229 // Entfernung
230
231#define SI_WIDTH "si_width"
232 // Breite des Flaechenangriffs
233
234#define SI_DEPTH "si_depth"
235 // Tiefe des Flaechenangriffs
236
237#define SI_INHERIT "si_inherit"
238 // Skill, von dem etwas
239 // uebernommen werden soll
240
241#define SI_DIFFICULTY "si_difficulty"
242 // Wert, der die Obergrenze der
243 // Faehigkeit abgrenzt
244
245#define SI_LASTLIGHT "si_lastlight"
246 // Fuer Nachtsicht: Wann hat
247 // der Spieler zum letzten mal
248 // Licht gesehen.
249
250#define SI_SKILLHEAL "si_heal"
251 // Heilung
252
253#define SI_USR "si_usr"
254 // selbst definierte Infos
255
256#define SI_TESTFLAG "si_testflag"
257 // Testflag
258
259#define SI_GUILD "si_guild"
260 // Gilde, falls Auswahl aus
261 // mehreren moeglich
262
263#define SI_ENEMY "si_enemy"
264 // Feind bei Kampfspruechen
265
266#define SI_FRIEND "si_friend"
267 // Der zu verteidigende Freund
268 // bei DefendOther und
269 // InformDefend
270
271#define SI_MAGIC_TYPE "si_magic_type"
272 // Von was fuer einer Art ist
273 // die Magie (s.u.)
274
275#define SI_PREPARE_TIME "si_prepare_time"
276 // Zeit die zur Vorbereitung
277 // benoetigt wird.
278
279#define SI_ATTACK_BUSY_MSG "si_attack_busy_msg"
280 // Meldung, wenn der Spieler zu
281 // beschaeftigt ist
282
283#define SI_NO_ATTACK_BUSY "si_no_attack_busy"
284 // Wenn der Spell nicht als
285 // Taetigkeit zaehlen/gezaehlt
286 // werden soll, kann man hier
287 // NO_ATTACK_BUSY[_SET|_QUERY]
288 // (s.u.) setzen
289
290#define SI_ATTACK_BUSY_AMOUNT "si_attack_busy_amount"
291 // Der Spell hat ein gewisses
292 // AttackBusy, aber das weicht
293 // vom Standardwert 1 ab. Der
294 // Wert kann hier gesetzt
295 // werden.
296
297#define SI_LAST_USE "si_last_use"
298 // Letzte benutzung eines
299 // Skills (fuer Rassenskills)
300
301#define SI_LEARN_PROB "si_learn_prob"
302 // Lernwahrscheinlichkeit
303 // (fuer Rassenskills)
304
305#define SI_SKILLDURATION "si_duration"
306 // Wie soll wird der Skill anhalten?
307 // (fuer Spells mit einer Dauer)
308
309// ===== Parameter fuer Spell-Mapping: =====
310
311#define SP_NAME "sp_name"
312 // Name des Spells
313
314#define SP_SHOW_DAMAGE "sp_showdamage"
315 // Treffermeldung soll gezeigt
316 // werden.
317
318#define SP_REDUCE_ARMOUR "sp_reduce_ac"
319 // AC soll Typabhaengig
320 // reduziert werden.
321
322#define SP_PHYSICAL_ATTACK "sp_physical"
323 // Koerperlicher Angriff
324
325#define SP_RECURSIVE "sp_recursive"
326 // Rekursionen
327
328#define SP_NO_ENEMY "no_enemy"
329 // Ist kein richtiger Angriff
330
331#define SP_NO_ACTIVE_DEFENSE "sp_no_active_defense"
332 // Es ist keine aktive Abwehr erwuenscht
333
334#define SP_GLOBAL_ATTACK "sp_global_attack"
335 // Ist Flaechenangriff
336
337// ===== Skill Restrictions: =====
338
339#define SR_FUN "restr_fun"
340 // Funktion, die weitere
341 // Einschraenkungen prueft
342
343#define SR_EXCLUDE_RACE "restr_race_ex"
344 // Ausgeschlossene Rassen
345
346#define SR_INCLUDE_RACE "restr_race_in"
347 // Eingeschlossene Rassen
348
349#define SR_EXCLUDE_GUILD "restr_guild_ex"
350 // Ausgeschlossene Gilden
351
352#define SR_INCLUDE_GUILD "restr_guild_in"
353 // Eingeschlossene Gilden
354
355#define SR_GOOD "restr_good"
356 // Align <
357
358#define SR_BAD "restr_bad"
359 // Align >
360
361#define SR_FREE_HANDS "restr_hands"
362 // Benoetigte freie Haende
363
364#define SR_SEER "restr_seer"
365 // Muss Seher sein
366
367#define SR_MIN_SIZE "min_size"
368 // Mindestgroesse
369
370#define SR_MAX_SIZE "max_size"
371 // Maximalgroesse
372
373#define SR_PROP "restr_properties"
374 // Werte beliebiger Properties
375
376#define SR_QUEST "restr_quests"
377 // Quest bestanden
378
379#define SR_MINIQUEST "restr_miniquests"
380 // Miniquest geloest
381
382// ===== Skill Modifier: =====
383
384#define SM_RACE "modify_race"
385 // Rassenspezifische
386 // Besonderheiten
387
388// ===== Fuer das Attack-Busy-Handling: =====
389
390#define NO_ATTACK_BUSY_SET 0x001
391#define NO_ATTACK_BUSY_QUERY 0x002
392#define NO_ATTACK_BUSY 0x003
393
394// ===== Magie-Arten: =====
395
396#define MT_ANGRIFF "mt_angriff"
397#define MT_BEHERRSCHUNG "mt_beherrschung"
398#define MT_BESCHWOERUNG "mt_beschwoerung"
399#define MT_BEWEGUNG "mt_bewegung"
400#define MT_CREATION "mt_creation"
401#define MT_HEILUNG "mt_heilung"
402#define MT_HELLSICHT "mt_hellsicht"
403#define MT_ILLUSION "mt_illusion"
404#define MT_PSYCHO "mt_psycho"
405#define MT_SAKRAL "mt_sakral"
406#define MT_SCHUTZ "mt_schutz"
407#define MT_VERWANDLUNG "mt_verwandlung"
408
409#define MT_MISC "mt_misc"
410
411// ===== Defines fuer FindGroup() =====
412
413#define FG_ENEMIES -1
414#define FG_FRIENDS 1
415#define FG_ALL 0
416
417// ======== OBSOLETE Properties / Defines =============
418// Prop wird nicht mehr genutzt, ist aber noch fuer /std/player/base.c noetig,
419// um den SAVE-Status in den Spieler-Props zu loeschen.
420#define P_GUILD_PREVENTS_RACESKILL "guild_prevents_raceskill"
421
422#endif