blob: adce0622d2a2615db875d8ad09d4098971983b07 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// (c) by Padreic (Padreic@mg.mud.de)
2
3#include "../files.h"
4#include <combat.h>
5#include <new_skills.h>
6#include "/p/zauberer/zauberer.h"
7
8inherit NPC("stdnpc");
9
10void create()
11{
12 ::create();
13 SetProp(P_SHORT, "Titina die Waldfee");
14 SetProp(P_LONG,
15 BS("Vor Dir steht Titina die Waldfee. Ihr langes goldenes Haar weht "
16 +"leicht im Wind und das einzige was sie bedeckt, ist ein leichtes Blaetterkleid "
17 +"das ihre weiblichen Rundungen ausserordentlich gut zur Geltung bringt. "
18 +"Ihre schoenen blauen Augen, tun ein uebriges um Dich ganz wahnsinnig zu machen."));
19 SetProp(P_NAME, "Titina");
20 SetProp(P_ARTICLE, 0);
21 SetProp(P_GENDER, FEMALE);
22 SetProp(P_LEVEL, 80);
23 SetProp(P_ATTRIBUTES, (["int":60,"con":40,"str":16,"dex":50]) );
24 SetProp(P_DISABLE_ATTACK, -10000); // is nich :)
25 SetProp(P_BODY, 80);
26 SetProp(P_MAX_SP, 2000);
27 SetProp(P_SP, 2000);
28 SetProp(P_MAX_HP, 600);
29 SetProp(P_HP, 600);
30 SetProp(P_ALIGN, 400);
31 SetProp(P_RACE, "Fee");
32 SetProp(P_SIZE, 160+random(16));
33 SetProp(P_ALCOHOL, 0);
34 SetProp(P_CORPSE, OBJ("feenleiche"));
35 SetProp(P_MAX_ALCOHOL, 0); // kein rauschen :)
36 AddAdjective("wunderschoen");
37 AddId(({"titina", "fee", "waldfee", WALDID("fee")}));
38 SetProp(P_HANDS, ({" mit ihren zarten Haenden", 150, DT_BLUDGEON}) );
39 SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPELL_PENETRATION: 100]));
40 SetProp(P_XP, 800*200*5*2);
41 SetProp(P_GUILD, "zauberer");
42 SetProp(P_Z_NO_MATERIAL, 1);
43 SetProp(P_DEFAULT_INFO, "schweigt und laechelt Dich einfach nur freundlich an.\n");
44 ModifySkill("verletze",
45 ([SI_SKILLABILITY:8000, SI_SPELLCOST:0,
46 SI_SPELLFATIGUE:0, SI_NO_CONSEQUENCES:10000,
47 SI_SKILLRESTR_USE:([P_GUILD_LEVEL:0,SR_FREE_HANDS:0]),
48 SI_ARMOUR_RESTR:0]),0,"zauberer");
49 SetProp(P_GUILD, 0);
50 SetProp(P_RESISTANCE_STRENGTHS,
51 ([DT_UNHOLY: 0.25,
52 DT_AIR: 0.3,
53 DT_POISON: 0.15]) ); // sonst selten in benutzung :)
54
55 AddItem(OBJ("kamm"), CLONE_WIELD);
56 AddItem(OBJ("kleid"), CLONE_WEAR);
57 if (file_size(SAECKCHEN)>0) AddItem(SAECKCHEN, CLONE_NEW);
58}
59
60static string _query_long()
61{
62 if (!PL || PL->QueryProp(P_GENDER)==FEMALE)
63 return Query(P_LONG)
64 +"Ihr ueberhebliches laecheln bringt Dich jedoch total zur Weissglut, so eine\n"
65 +"Zicke hier den ganzen Tag rumzusitzen und sich nur die Haare zu kaemmen.\n";
66 return Query(P_LONG)
67 +"Mit ihrem charmanten laecheln, zieht sie Dich sofort in ihren Bann und Du\n"
68 +"wuerdest ihr jeden Wunsch erfuellen, so sie denn einen aeussern wuerde.\n";
69}
70
71void Attack(object enemy)
72{
73 int normal_speed;
74 normal_speed=(enemy->QueryProp(P_SKILL_ATTRIBUTE_OFFSETS)||([]))[SA_SPEED]||100;
75 if (enemy && enemy->QuerySkillAttribute(SA_SPEED) > normal_speed) {
76 write("Die Fee macht eine beruhigende Handbewegung und ploetzlich fuehlst Du Dich\n"
77 +"ruhig und Du merkst wie Du allmaehlich wieder langsamer wirst...\n");
78 enemy->ModifySkillAttribute(SA_SPEED, -20, 180);
79 }
80 if (enemy) ::Attack(enemy);
81 SetProp(P_GUILD, "zauberer");
82 command("verletze mit "+({"feuer", "magie", "eis", "wasser", "gift",
83 "wind", "saeure", "laerm"})[random(8)] );
84 SetProp(P_GUILD, 0);
85}
86
87int Defend(int dam, mixed dts, mixed spell, object enemy)
88{
89 int normal_speed;
90 normal_speed=(enemy->QueryProp(P_SKILL_ATTRIBUTE_OFFSETS)||([]))[SA_SPEED]||100;
91 if (enemy && enemy->QuerySkillAttribute(SA_SPEED) > normal_speed) {
92 write(Name(WER)+" macht eine beruhigende Handbewegung und ploetzlich fuehlst Du Dich\n"
93 +"ruhig und Du merkst wie Du allmaehlich wieder langsamer wirst...\n");
94 enemy->ModifySkillAttribute(SA_SPEED, -20, 180);
95 }
96
97 if ((!spell || (mappingp(spell) && spell[SP_PHYSICAL_ATTACK])) && !random(4)) {
98 tell_room(environment(), Name(WER)+" weicht schnell einen Schritt zurueck und weicht Deinem Angriff aus.\n");
99 dam=0;
100 }
101 return (int)::Defend(dam, dts, spell, enemy);
102}
103
104void NotifyPlayerDeath(object who, object killer, object lost_exp)
105{
106 if (!who || killer!=ME) return; // uninteressant
107 log_file("padreic/kill", ctime(time())+" "+capitalize(getuid(who))+" getoetet von /zauberwald/titina\n");
108}
109
110void die()
111{
112 log_file("padreic/kill", ctime(time())+" Titina wurde von "+get_killer()+" getoetet.\n");
113 ::die();
114}