| // MorgenGrauen MUDlib |
| // |
| // combat.h -- Schadenstypen, Waffen- und Ruestungsklassen und ein |
| // paar Properties fuer das Kampfsystem |
| // |
| // $Id: combat.h 7178 2009-03-09 20:42:49Z Zesstra $ |
| |
| #ifndef _COMBAT_H_ |
| #define _COMBAT_H_ |
| |
| #include <weapon.h> |
| #include <armour.h> |
| #include <ranged_weapon.h> |
| |
| /* -------------------- Properties -------------------- */ |
| |
| /* ---------- Kampf allgemein ---------- */ |
| |
| #define P_ENABLE_IN_ATTACK_OUT "enable_in_attack_out" |
| #define P_NO_GLOBAL_ATTACK "no_global_attack" |
| #define P_FRIEND "friend" |
| #define P_LAST_COMBAT_TIME "last_combat_time" |
| |
| /* ---------- Befrieden ---------------- */ |
| |
| #define P_ACCEPT_PEACE "accept_peace" |
| |
| /* ---------- Waffen und Ruestungen ---------- */ |
| |
| #define P_LAST_USE "last_object_use" |
| #define P_DAMAGED "item_damaged" |
| #define P_EFFECTIVE_WC "effective_wc" |
| #define P_EFFECTIVE_AC "effective_ac" |
| #define P_QUALITY "quality" |
| #define P_RESTRICTIONS "restrictions" |
| #define P_EQUIP_TIME "equip_time" |
| |
| /* ---------- Artillerie ------------*/ |
| |
| #define P_IS_ARTILLERY "artillery" |
| |
| /* ---------- Fernkampfwaffen ---------- */ |
| |
| #define P_SHOOTING_WC "shooting_wc" |
| #define P_AMMUNITION "munition" |
| #define P_STRETCH_TIME "stretch_time" |
| #define P_RANGE "range" |
| #define P_SHOOTING_AREA "shooting_area" |
| #define P_TARGET_AREA "target_area" |
| |
| /* ----- Defines fuer Array-Positionen ----- */ |
| |
| #define RW_SIZE 5 |
| #define RW_ENEMY 0 |
| #define RW_AMMU 1 |
| #define RW_WRITE 2 |
| #define RW_VICTIM 3 |
| #define RW_SAY 4 |
| |
| /* -------------------- Waffentypen -------------------- */ |
| |
| #define WT_AMMU "ammunition" |
| #define WT_AXE "axe" |
| #define WT_CLUB "club" |
| #define WT_HANDS "hands" |
| #define WT_KNIFE "knife" |
| #define WT_MAGIC "magic" |
| #define WT_RANGED_WEAPON "fernwaffe" |
| #define WT_SPEAR "spear" |
| #define WT_STAFF "staff" |
| #define WT_SWORD "sword" |
| #define WT_WHIP "whip" |
| |
| // Fuer alles, was sich unter den o.g. Typen nicht einordnen laesst |
| #define WT_MISC "misc" |
| |
| /* ---------- Liste aller erlaubten Waffentypen ---------- */ |
| |
| #define VALID_WEAPON_TYPE(t) (member(({\ |
| WT_SWORD, WT_AXE, WT_CLUB, WT_SPEAR, WT_KNIFE, WT_AMMU, WT_MAGIC,\ |
| WT_STAFF, WT_WHIP, WT_MISC, WT_RANGED_WEAPON }), t ) != -1) |
| |
| /* ---------- Maximal erlaubte Waffenstaerke ---------- */ |
| |
| #define MAX_WEAPON_CLASS 200 |
| |
| #define MAX_TWOHANDED_WC MAX_WEAPON_CLASS |
| /* Die Einhaltung der Einhaender-Grenze wird bisher nicht garantiert */ |
| #define MAX_ONEHANDED_WC 150 |
| |
| /* ---------- Mindest-Waffenstaerke, die eine Waffe |
| bei einer Beschaedigung behaelt ---------- */ |
| |
| #define MIN_WEAPON_CLASS 30 |
| |
| /* ---------- Maximal erlaubte Parierwaffenstaerke ---------- */ |
| |
| #define MAX_PARRY_CLASS 40 |
| |
| /* ---------- Auch fuer Paruerwaffen gibt |
| es eine Minimalstaerke ---------- */ |
| |
| #define MIN_PARRY_CLASS 0 |
| |
| /* ---------- Dito fuer Ruestungen ---------- */ |
| |
| #define MIN_ARMOUR_CLASS 0 |
| |
| /* -------------------- Munition fuer Fernkampfwaffen -------------------- */ |
| |
| // als x bitte _immer_ den Namen der Munitionsart im Plural angeben, |
| // dieses ermoeglicht ein auswerten via MUN_NAME() z.b. in gilden |
| |
| #define MUN_MISC(x) "Munition:"+x |
| |
| // ueber dieses define und bitte _nur_ ueber dieses define koennen |
| // Gilden oder aehnliches den Namen einer Munitionsart ermitteln. Dieses |
| // ist wichtig wenn naehere Infos ueber eine Waffe ausgegeben werden sollen. |
| // Bsp. "Ein Bogen wiegt 1500 Gramm und erlaubt es Dir Pfeile mit einer |
| // Reichweite von 50 m zu verschiessen." |
| // sprintf("%s wiegt %d Gramm und erlaubt es Dir %s mit einer Reichweite " |
| // +"von %d m zu verschiessen.", ob->Name(WER), ob->QueryProp(P_WEIGHT), |
| // MUN_NAME(ob->QueryProp(P_AMMUNITION)), ob->QueryProp(P_RANGE)) |
| |
| #define MUN_NAME(x) x[9..] |
| |
| #define MUN_ARROW MUN_MISC("Pfeile") |
| #define MUN_STONE MUN_MISC("Steine") |
| #define MUN_BOLT MUN_MISC("Bolzen") |
| #define MUN_DART MUN_MISC("kleine Blasrohrpfeile") |
| |
| // Fuer die hier definierten Munitionstypen gibt es auch einen Schuss-Skill |
| |
| #define VALID_SHOOT_SKILL ([\ |
| MUN_ARROW : "arrow",\ |
| MUN_STONE : "stone",\ |
| MUN_BOLT : "bolt",\ |
| MUN_DART : "dart" ]) |
| |
| /* -------------------- Schadensarten -------------------- */ |
| |
| /* ---------- physikalisch --------- */ |
| |
| // Schlagschaden |
| #define DT_BLUDGEON "bludgeon" |
| |
| #define DT_EXPLOSION "explosion" |
| |
| // Stichschaden |
| #define DT_PIERCE "pierce" |
| |
| // reissender Schaden/Krallen |
| #define DT_RIP "rip" |
| |
| // Schnittschaden |
| #define DT_SLASH "slash" |
| |
| // Quetschungsschaden |
| #define DT_SQUEEZE "squeeze" |
| |
| // peitschender Schaden |
| #define DT_WHIP "whip" |
| |
| /* ---------- Mapping aller physikalischen Schadensarten ---------- */ |
| |
| #define PHYSICAL_DAMAGE_TYPES ([\ |
| DT_BLUDGEON : 1,\ |
| DT_EXPLOSION : 1,\ |
| DT_PIERCE : 1,\ |
| DT_RIP : 1,\ |
| DT_SLASH : 1,\ |
| DT_SQUEEZE : 1,\ |
| DT_WHIP : 1 ]) |
| |
| /* ----------- magisch ---------- */ |
| |
| // Saeure |
| #define DT_ACID "acid" |
| |
| // Luft(mangel) |
| #define DT_AIR "air" |
| |
| // Kaelte oder Eis |
| #define DT_COLD "cold" |
| |
| // Feuer |
| #define DT_FIRE "fire" |
| |
| // heiliger Schaden |
| #define DT_HOLY "holy" |
| |
| // Blitz oder Elektrizitaet |
| #define DT_LIGHTNING "lightning" |
| |
| // (allg.) Magie |
| #define DT_MAGIC "magic" |
| |
| // Gift |
| #define DT_POISON "poison" |
| |
| // Laerm bzw. Schall |
| #define DT_SOUND "sound" |
| |
| // Angst |
| #define DT_TERROR "terror" |
| |
| // satanischer Schaden |
| #define DT_UNHOLY "unholy" |
| |
| // Wasser |
| #define DT_WATER "water" |
| |
| /* ---------- Mapping aller magischen Schadensarten ---------- */ |
| |
| #define MAGICAL_DAMAGE_TYPES ([\ |
| DT_ACID : 1,\ |
| DT_AIR : 1,\ |
| DT_COLD : 1,\ |
| DT_FIRE : 1,\ |
| DT_HOLY : 1,\ |
| DT_LIGHTNING : 1,\ |
| DT_MAGIC : 1,\ |
| DT_POISON : 1,\ |
| DT_SOUND : 1,\ |
| DT_TERROR : 1,\ |
| DT_UNHOLY : 1,\ |
| DT_WATER : 1 ]) |
| |
| |
| /* ---------- Liste aller Schadensarten ---------- */ |
| |
| #define ALL_DAMAGE_TYPES ({ DT_BLUDGEON, DT_SLASH, DT_PIERCE, DT_MAGIC, \ |
| DT_FIRE, DT_COLD, DT_ACID, DT_WATER, \ |
| DT_LIGHTNING, DT_AIR, DT_POISON, DT_EXPLOSION, \ |
| DT_SQUEEZE, DT_SOUND, DT_RIP, DT_WHIP, \ |
| DT_HOLY, DT_UNHOLY, DT_TERROR }) |
| |
| /* Ist x ein gueltiger Schadenstyp der Mudlib? */ |
| #define VALID_DAMAGE_TYPE(x) (member(ALL_DAMAGE_TYPES, x) > -1) |
| |
| /* -------------------- Ruestungstypen -------------------- */ |
| |
| #define AT_AMULET "Amulett" |
| #define AT_ARMOUR "Ruestung" |
| #define AT_BELT "Guertel" |
| #define AT_BOOT "Schuhe" |
| #define AT_CLOAK "Umhang" |
| #define AT_GLOVE "Handschuh" |
| #define AT_HELMET "Helm" |
| #define AT_QUIVER "Koecher" |
| #define AT_RING "Ring" |
| #define AT_SHIELD "Schild" |
| #define AT_TROUSERS "Hosen" |
| |
| // Fuer alles, was sich unter den o.g. Typen nicht einordnen laesst |
| #define AT_MISC "Misc" |
| |
| // Defaultwert fuer SP_REDUCE_ARMOUR, kein gueltiger Ruestungstyp |
| #define AT_DEFAULT_REDUCE "Default" |
| |
| // Ruestungen, die nicht angezogen werden koennen/duerfen |
| #define AT_ILLEGAL "ILLEGAL" |
| |
| /* ---------- Liste aller erlaubten Ruestungstypen ---------- */ |
| |
| #define VALID_ARMOUR_TYPE(t) (member(({\ |
| AT_ARMOUR, AT_HELMET, AT_RING, AT_GLOVE, AT_CLOAK, AT_BOOT,\ |
| AT_TROUSERS, AT_SHIELD, AT_AMULET, AT_MISC, AT_BELT,\ |
| AT_QUIVER}), t ) != -1) |
| |
| /* ---------- Mapping mit den maximal erlaubten |
| Ruestungswerten der einzelnen Ruestungstypen ---------- */ |
| |
| #define VALID_ARMOUR_CLASS ([ \ |
| AT_AMULET : 2 ,\ |
| AT_ARMOUR : 50 ,\ |
| AT_BELT : 2 ,\ |
| AT_BOOT : 6 ,\ |
| AT_CLOAK : 10 ,\ |
| AT_GLOVE : 5 ,\ |
| AT_HELMET : 15 ,\ |
| AT_QUIVER : 0 ,\ |
| AT_RING : 2 ,\ |
| AT_SHIELD : 40 ,\ |
| AT_TROUSERS : 15 ,\ |
| AT_MISC : 0 ]) |
| |
| /* ---------- Mapping mit den Ruestungswerten, ab denen |
| die Ruestung im Laden einbehalten werden ---------- */ |
| |
| #define KEEP_ARMOUR_CLASS ([ \ |
| AT_AMULET : 2 ,\ |
| AT_ARMOUR : 35 ,\ |
| AT_BELT : 2 ,\ |
| AT_BOOT : 5 ,\ |
| AT_CLOAK : 7 ,\ |
| AT_GLOVE : 5 ,\ |
| AT_HELMET : 12 ,\ |
| AT_QUIVER : 1 ,\ |
| AT_RING : 2 ,\ |
| AT_SHIELD : 26 ,\ |
| AT_TROUSERS : 12 ,\ |
| AT_MISC : 1 ]) |
| |
| /* -------------------- Defines fuer Kampfkommandos -------------------- */ |
| |
| #define C_AVG "avg" |
| #define C_MAX "max" |
| #define C_MIN "min" |
| #define C_DTYPES "dtypes" |
| #define C_HEAL "heal" |
| |
| |
| /* -------------------- Defines fuer erweiterte Defendinformationen -- */ |
| #define EINFO_DEFEND "einfo_defend" |
| #define ORIGINAL_DAM "original_dam" |
| #define ORIGINAL_DAMTYPE "original_damtype" |
| #define CURRENT_DAM "current_dam" |
| #define CURRENT_DAMTYPE "current_damtype" |
| #define ORIGINAL_AINFO "original_ainfo" |
| #define ENEMY_INSERTED "enemy_inserted" |
| #define RFR_REDUCE "rfr_reduce" |
| #define PRESENT_DEFENDERS "present_defenders" |
| #define DEFENDING_DEFENDER "defending_defender" |
| #define DEFEND_HOOK "defend_hook" |
| #define DEFEND_ARMOURS "defend_armours" |
| #define DEFEND_GUILD "defend_guild" |
| #define DEFEND_RESI "defend_resi" |
| #define DEFEND_BODY "defend_body" |
| #define DEFEND_LOSTLP "defend_lostlp" |
| #define DEFEND_CUR_ARMOUR_PROT "defend_cur_armour_prot" |
| |
| #define DEF_DEFENDER 0 |
| #define DEF_DAM 1 |
| #define DEF_DAMTYPE 2 |
| #define DEF_SPELL 3 |
| |
| #define HOOK_DAM 0 |
| #define HOOK_DAMTYPE 1 |
| #define HOOK_SPELL 2 |
| #define DI_NOHOOK 0 |
| #define DI_HOOK 1 |
| #define DI_HOOKINTERRUPT 2 |
| |
| #define DEF_ARMOUR_DAM 0 |
| #define DEF_ARMOUR_PROT 1 |
| |
| #define GUILD_DAM 0 |
| #define GUILD_DAMTYPE 1 |
| |
| #endif |
| |
| /* -------------------- Prototypen-Deklarationen -------------------- */ |
| |
| #ifndef __COMBAT_H_PROTOTYPES__ |
| #define __COMBAT_H_PROTOTYPES__ |
| |
| #ifdef NEED_PROTOTYPES |
| |
| #endif // NEED_PROTOTYPES |
| |
| #endif // __COMBAT_H_PROTOTYPES__ |
| |