MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // MorgenGrauen MUDlib |
| 2 | // |
| 3 | // shells/dwarf.c -- Dwarven Shell |
| 4 | // |
| 5 | // $Id: dwarf.c,v 3.14 2004/12/13 12:54:31 Zook Exp $ |
| 6 | |
| 7 | #pragma strong_types,save_types |
| 8 | |
| 9 | inherit "std/player/base"; |
| 10 | |
| 11 | #include <properties.h> |
| 12 | #include <attributes.h> |
| 13 | #include <wizlevels.h> |
| 14 | #include <health.h> |
| 15 | #include <new_skills.h> |
| 16 | #include <language.h> |
| 17 | #include <combat.h> |
| 18 | #include <defuel.h> |
| 19 | |
| 20 | |
| 21 | void create(){ |
| 22 | if (!clonep() || object_name(this_object()) == __FILE__[0..<3]) { |
| 23 | set_next_reset(-1); |
| 24 | return; |
| 25 | } |
| 26 | |
| 27 | mixed res; |
| 28 | |
| 29 | base::create(); |
| 30 | SetDefaultHome("/d/gebirge/room/zkapelle"); |
| 31 | SetDefaultPrayRoom("/d/gebirge/room/zkapelle"); |
| 32 | SetProp(P_ATTRIBUTES_OFFSETS,([A_STR:2,A_DEX:1,A_CON:3])); |
| 33 | SetProp(P_SKILL_ATTRIBUTE_OFFSETS,([SA_DURATION:110])); |
| 34 | SetProp(P_AVERAGE_SIZE,120); |
| 35 | SetProp(P_AVERAGE_WEIGHT,75000); |
| 36 | SetProp(P_MATERIAL_KNOWLEDGE,([MATGROUP_STONE:30, |
| 37 | MATGROUP_METAL:30, |
| 38 | MATGROUP_PRECIOUS_METAL: 40, |
| 39 | MAT_GOLD:100])); |
| 40 | SetProp(P_RESISTANCE_STRENGTHS, |
| 41 | ([ DT_FIRE : -0.2, |
| 42 | DT_WATER : 0.4 ])); |
| 43 | SetProp(P_MAX_ALCOHOL,200); |
| 44 | SetProp(P_MAX_FOOD,160); |
| 45 | |
| 46 | SetProp(P_SP_DELAY,HEAL_DELAY+1); |
| 47 | SetProp(P_POISON_DELAY,POISON_DELAY+1); |
| 48 | SetProp(P_FOOD_DELAY,FOOD_DELAY-1); |
| 49 | SetProp(P_ALCOHOL_DELAY,ALCOHOL_DELAY-1); |
| 50 | |
| 51 | SetProp(P_MAGIC_RESISTANCE_OFFSET, |
| 52 | ([ MT_ANGRIFF : 200, |
| 53 | MT_ILLUSION : -500, |
| 54 | MT_BEHERRSCHUNG : 1000, |
| 55 | MT_VERWANDLUNG : 500 ])); |
| 56 | |
| 57 | if(!IS_SEER(this_object())){ |
| 58 | SetProp(P_MSGIN,"stapft herein"); |
| 59 | SetProp(P_MSGOUT,"stapft"); |
| 60 | } |
| 61 | |
| 62 | if(!(res=QueryProp(P_HANDS)) || !pointerp(res) || (sizeof(res)<3)) |
| 63 | res=({" mit blossen Haenden",35,({DT_BLUDGEON}) }); |
| 64 | res[1]=35; |
| 65 | SetProp(P_HANDS,res); |
| 66 | SetProp(P_BODY,10); |
| 67 | |
| 68 | /* Groesse wird nur einmal gesetzt */ |
| 69 | if(!QueryProp(P_SIZE)){ |
| 70 | SetProp(P_SIZE,110+random(21)); |
| 71 | Set(P_SIZE,SAVE,F_MODE_AS); |
| 72 | } |
| 73 | |
| 74 | /* Dito Gewicht */ |
| 75 | if(!QueryProp(P_WEIGHT) || (QueryProp(P_WEIGHT) == 75000)){ |
| 76 | SetProp(P_WEIGHT,65000+random(20001)); |
| 77 | if(QueryProp(P_GENDER)==FEMALE) |
| 78 | SetProp(P_WEIGHT,QueryProp(P_WEIGHT)-5000); |
| 79 | Set(P_WEIGHT,SAVE,F_MODE_AS); |
| 80 | } |
| 81 | |
| 82 | SetProp(P_DEFUEL_LIMIT_FOOD,70); |
| 83 | SetProp(P_DEFUEL_LIMIT_DRINK,50); |
| 84 | SetProp(P_DEFUEL_TIME_FOOD,535); |
| 85 | SetProp(P_DEFUEL_TIME_DRINK,500); |
| 86 | SetProp(P_DEFUEL_AMOUNT_FOOD,0.8); |
| 87 | SetProp(P_DEFUEL_AMOUNT_DRINK,0.6); |
| 88 | |
| 89 | } |
| 90 | |
| 91 | string _query_race() |
| 92 | { |
| 93 | return "Zwerg"; |
| 94 | } |
| 95 | |
| 96 | string _query_real_race() |
| 97 | { |
| 98 | return "Zwerg"; |
| 99 | } |
| 100 | |
| 101 | string _query_racedescr() |
| 102 | { |
| 103 | return |
| 104 | "Zwerge sind kleine aber kraeftige Gebirgsbewohner, nicht sehr gespraechig,\n" |
| 105 | +"leicht erzuernt, aber eine schlagkraeftige Unterstuetzung fuer ihre Freunde." |
| 106 | +"\n" |
| 107 | +"Ihr Mut und ihre Standfestigkeit ist weit und breit beruehmt, auch ihr\n" |
| 108 | +"Geschick im Umgang mit Zwergenwaffen verleiht ihnen zusaetzliche Kraft.\n" |
| 109 | +"Leider sind Zwerge nicht allzu schlau, sie verlassen sich lieber auf\n" |
| 110 | +"ihre Kraft als auf ihr Gehirn.\n"; |
| 111 | } |
| 112 | |
| 113 | int QueryAllowSelect() { return 1; } |
| 114 | |
| 115 | string *_query_racestring() |
| 116 | { |
| 117 | if (QueryProp(P_GENDER)==2) |
| 118 | return ({"Zwergin","Zwergin","Zwergin","Zwergin"}); |
| 119 | return ({"Zwerg","Zwerges","Zwerg","Zwerg"}); |
| 120 | } |
| 121 | int _query_hp_delay(){ |
| 122 | int re; |
| 123 | re = Query(P_HP_DELAY); |
| 124 | if (environment() && environment()->QueryProp(P_INDOORS)) |
| 125 | re--; |
| 126 | else |
| 127 | re++; |
| 128 | return re; |
| 129 | } |
| 130 | int _query_sp_delay(){ |
| 131 | int re; |
| 132 | re = Query(P_SP_DELAY); |
| 133 | if (environment() && environment()->QueryProp(P_INDOORS)) |
| 134 | re--; |
| 135 | else |
| 136 | re++; |
| 137 | return re; |
| 138 | } |
| 139 | |
| 140 | string _query_default_guild(){ |
| 141 | return "abenteurer"; |
| 142 | } |
| 143 | |
| 144 | mixed RaceDefault(string arg) |
| 145 | { |
| 146 | if (!arg) |
| 147 | return 0; |
| 148 | switch(arg) |
| 149 | { |
| 150 | case P_HANDS : |
| 151 | return ({" mit blossen Haenden",35,({DT_BLUDGEON}) }); |
| 152 | case P_BODY : |
| 153 | return 10; |
| 154 | } |
| 155 | return 0; |
| 156 | } |