blob: 808d16ddd42d6bb3f3fa372ab6f73fb3036250ca [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"
90#define SK_MAGIC_ATTACK "MagicAttack"
91#define SK_MAGIC_DEFENSE "MagicDefense"
92#define SK_NIGHTVISION "Nightvision"
93#define SK_SHOOT "Shoot"
94#define SK_SPELL_DEFEND "SpellDefend"
95#define SK_SWORDFIGHTING FIGHT(WT_SWORD)
96#define SK_TWOHANDED "Bihand"
97#define SK_WEAPONLESS FIGHT(WT_HANDS)
98
99// ===== Skill Infos: =====
100
101#define FACTOR(x) ("fac_"+x)
102#define OFFSET(x) ("off_"+x)
103
104#define SI_SKILLFUNC "si_func"
105 // Funktion, die aufgerufen wird
106
107#define SI_CLOSURE "si_closure"
108 // Nur fuer den internen Gebrauch
109 // (Geschwindigkeitsoptimierung)
110
111#define SI_SPELLBOOK "si_spellbook"
112 // Spellbook, in dem der Spell
113 // steht
114
115#define SI_SPELLCOST "si_cost"
116 // Kosten des Spells
117
118#define SI_TIME_MSG "time_msg"
119 // Die Meldung wird anstelle von
120 // "Du bist noch zu erschoepft
121 // von Deinem letzten Spruch."
122 // ausgegeben.
123
124#define SI_SP_LOW_MSG "sp_low_msg"
125 // Die Meldung wird anstelle von
126 // "Du hast zu wenig Zauberpunkte
127 // fuer diesen Spruch."
128 // ausgegeben.
129
130#define SI_PREPARE_MSG "si_prepare_msg"
131#define SI_PREPARE_ABORT_MSG "si_prepare_abort_msg"
132#define SI_PREPARE_BUSY_MSG "si_prepare_busy_msg"
133 // Meldungen fuer Spruch-
134 // vorbereitung, Abbruch und
135 // schon beschaeftigt
136
137#define SI_NOMAGIC "si_nomagic"
138 // Prozentwert, mit dem P_NOMAGIC
139 // umgangen werden kann
140
141#define SI_NOMAGIC_MSG "si_nomagic_msg"
142 // Meldung, die Anstelle von
143 // "Dein Zauberspruch verpufft
144 // im Nichts" ausgegeben werden
145 // soll.
146
147#define SI_SPELLFATIGUE "si_fatigue"
148 // Erschoepfung - Zeit, in der
149 // keine weiteren Spells
150 // aufgerufen werden koennen
151#define SI_X_SPELLFATIGUE "std:si:xfatigue"
152
153#define SI_SKILLLEARN "si_learn"
154 // Lerngeschwindigkeit in 0.01%
155 // pro A_INT/2
156
157#define SI_LEARN_ATTRIBUTE "si_learn_attribute"
158 // Wenn man nicht will, dass man in Abhaengigkeit von
159 // INT lernt
160
161#define SI_NO_LEARN "si_no_learn"
162 // Wenn man (temporaer!) nicht will, dass dieser Skill gelernt wird.
163 // Muss von den Spellbooks beachtet werden.
164 // Sollte niemals im Spieler abgespeichert werden. Oder permanent in
165 // Gilde/Spellbook gesetzt sein. Sondern im Laufe einesr Nutzung in der jew.
166 // Kopie von sinfo gesetzt werden, die gerade genutzt wird.
167
168#define SI_SKILLABILITY "si_abil"
169 // Faehigkeit, diesen Spruch zu
170 // benutzen
171
172#define SI_SKILLARG "si_arg"
173 // Argumente, die uebergeben
174 // wurden
175
176#define SI_SKILLRESTR_USE "si_restr_u"
177 // Beschraenkungen beim Gebrauch
178
179#define SI_SKILLRESTR_LEARN "si_restr_l"
180 // Beschraenkungen beim Lernen
181
182#define SI_SKILLINFO "si_info"
183 // Kurzer Informationstext
184
185#define SI_SKILLINFO_LONG "si_info_l"
186 // Langer Informationstext
187
188#define SI_SKILLDAMAGE "si_damage"
189 // Schaden
190
191#define SI_SKILLDAMAGE_BY_ROW "si_damage_by_row"
192 // Schaden durch Teamreihen
193
194#define SI_SKILLDAMAGE_TYPE "si_damtyp"
195 // Art des Schadens
196
197#define SI_SKILLDAMAGE_MSG "si_dammsg"
198 // Meldung die anstelle einer
199 // Waffe kommen soll
200
201#define SI_SKILLDAMAGE_MSG2 "si_dammsg2"
202 // dito fuer den Text fuer
203 // andere im Raum
204
205#define SI_SPELL "si_spell"
206 // Spell, mit dem angegriffen
207 // wurde
208
209#define SI_COLLATERAL_DAMAGE "si_collateral_damage"
210 // Schadensanteil bei Flaechen-
211 // spells, den Freunde abbekommen,
212 // in Prozent
213
214#define SI_NUMBER_ENEMIES "si_num_enemies"
215 // Anzahl Feinde bei
216 // Flaechenspruch
217
218#define SI_NUMBER_FRIENDS "si_num_friends"
219 // Anzahl Freunde bei
220 // Flaechenspruch
221
222#define SI_DISTANCE "si_distance"
223 // Entfernung
224
225#define SI_WIDTH "si_width"
226 // Breite des Flaechenangriffs
227
228#define SI_DEPTH "si_depth"
229 // Tiefe des Flaechenangriffs
230
231#define SI_INHERIT "si_inherit"
232 // Skill, von dem etwas
233 // uebernommen werden soll
234
235#define SI_DIFFICULTY "si_difficulty"
236 // Wert, der die Obergrenze der
237 // Faehigkeit abgrenzt
238
239#define SI_LASTLIGHT "si_lastlight"
240 // Fuer Nachtsicht: Wann hat
241 // der Spieler zum letzten mal
242 // Licht gesehen.
243
244#define SI_SKILLHEAL "si_heal"
245 // Heilung
246
247#define SI_USR "si_usr"
248 // selbst definierte Infos
249
250#define SI_TESTFLAG "si_testflag"
251 // Testflag
252
253#define SI_GUILD "si_guild"
254 // Gilde, falls Auswahl aus
255 // mehreren moeglich
256
257#define SI_ENEMY "si_enemy"
258 // Feind bei Kampfspruechen
259
260#define SI_FRIEND "si_friend"
261 // Der zu verteidigende Freund
262 // bei DefendOther und
263 // InformDefend
264
265#define SI_MAGIC_TYPE "si_magic_type"
266 // Von was fuer einer Art ist
267 // die Magie (s.u.)
268
269#define SI_PREPARE_TIME "si_prepare_time"
270 // Zeit die zur Vorbereitung
271 // benoetigt wird.
272
273#define SI_ATTACK_BUSY_MSG "si_attack_busy_msg"
274 // Meldung, wenn der Spieler zu
275 // beschaeftigt ist
276
277#define SI_NO_ATTACK_BUSY "si_no_attack_busy"
278 // Wenn der Spell nicht als
279 // Taetigkeit zaehlen/gezaehlt
280 // werden soll, kann man hier
281 // NO_ATTACK_BUSY[_SET|_QUERY]
282 // (s.u.) setzen
283
284#define SI_ATTACK_BUSY_AMOUNT "si_attack_busy_amount"
285 // Der Spell hat ein gewisses
286 // AttackBusy, aber das weicht
287 // vom Standardwert 1 ab. Der
288 // Wert kann hier gesetzt
289 // werden.
290
291#define SI_LAST_USE "si_last_use"
292 // Letzte benutzung eines
293 // Skills (fuer Rassenskills)
294
295#define SI_LEARN_PROB "si_learn_prob"
296 // Lernwahrscheinlichkeit
297 // (fuer Rassenskills)
298
299#define SI_SKILLDURATION "si_duration"
300 // Wie soll wird der Skill anhalten?
301 // (fuer Spells mit einer Dauer)
302
303// ===== Parameter fuer Spell-Mapping: =====
304
305#define SP_NAME "sp_name"
306 // Name des Spells
307
308#define SP_SHOW_DAMAGE "sp_showdamage"
309 // Treffermeldung soll gezeigt
310 // werden.
311
312#define SP_REDUCE_ARMOUR "sp_reduce_ac"
313 // AC soll Typabhaengig
314 // reduziert werden.
315
316#define SP_PHYSICAL_ATTACK "sp_physical"
317 // Koerperlicher Angriff
318
319#define SP_RECURSIVE "sp_recursive"
320 // Rekursionen
321
322#define SP_NO_ENEMY "no_enemy"
323 // Ist kein richtiger Angriff
324
325#define SP_NO_ACTIVE_DEFENSE "sp_no_active_defense"
326 // Es ist keine aktive Abwehr erwuenscht
327
328#define SP_GLOBAL_ATTACK "sp_global_attack"
329 // Ist Flaechenangriff
330
331// ===== Skill Restrictions: =====
332
333#define SR_FUN "restr_fun"
334 // Funktion, die weitere
335 // Einschraenkungen prueft
336
337#define SR_EXCLUDE_RACE "restr_race_ex"
338 // Ausgeschlossene Rassen
339
340#define SR_INCLUDE_RACE "restr_race_in"
341 // Eingeschlossene Rassen
342
343#define SR_EXCLUDE_GUILD "restr_guild_ex"
344 // Ausgeschlossene Gilden
345
346#define SR_INCLUDE_GUILD "restr_guild_in"
347 // Eingeschlossene Gilden
348
349#define SR_GOOD "restr_good"
350 // Align <
351
352#define SR_BAD "restr_bad"
353 // Align >
354
355#define SR_FREE_HANDS "restr_hands"
356 // Benoetigte freie Haende
357
358#define SR_SEER "restr_seer"
359 // Muss Seher sein
360
361#define SR_MIN_SIZE "min_size"
362 // Mindestgroesse
363
364#define SR_MAX_SIZE "max_size"
365 // Maximalgroesse
366
367#define SR_PROP "restr_properties"
368 // Werte beliebiger Properties
369
370#define SR_QUEST "restr_quests"
371 // Quest bestanden
372
373#define SR_MINIQUEST "restr_miniquests"
374 // Miniquest geloest
375
376// ===== Skill Modifier: =====
377
378#define SM_RACE "modify_race"
379 // Rassenspezifische
380 // Besonderheiten
381
382// ===== Fuer das Attack-Busy-Handling: =====
383
384#define NO_ATTACK_BUSY_SET 0x001
385#define NO_ATTACK_BUSY_QUERY 0x002
386#define NO_ATTACK_BUSY 0x003
387
388// ===== Magie-Arten: =====
389
390#define MT_ANGRIFF "mt_angriff"
391#define MT_BEHERRSCHUNG "mt_beherrschung"
392#define MT_BESCHWOERUNG "mt_beschwoerung"
393#define MT_BEWEGUNG "mt_bewegung"
394#define MT_CREATION "mt_creation"
395#define MT_HEILUNG "mt_heilung"
396#define MT_HELLSICHT "mt_hellsicht"
397#define MT_ILLUSION "mt_illusion"
398#define MT_PSYCHO "mt_psycho"
399#define MT_SAKRAL "mt_sakral"
400#define MT_SCHUTZ "mt_schutz"
401#define MT_VERWANDLUNG "mt_verwandlung"
402
403#define MT_MISC "mt_misc"
404
405// ===== Defines fuer FindGroup() =====
406
407#define FG_ENEMIES -1
408#define FG_FRIENDS 1
409#define FG_ALL 0
410
411// ======== OBSOLETE Properties / Defines =============
412// Prop wird nicht mehr genutzt, ist aber noch fuer /std/player/base.c noetig,
413// um den SAVE-Status in den Spieler-Props zu loeschen.
414#define P_GUILD_PREVENTS_RACESKILL "guild_prevents_raceskill"
415
416#endif