/* the stat data for the living objects... */ static int intbon, dexbon, conbon, strbon, wisbon, chabon; int Dex, Int, Con, Str, Wis, Cha, inttmp, dextmp, contmp, wistmp, strtmp, chatmp; static int no_check; int extra_attack_bonus, extra_defend_bonus, magical, ac; int query_no_check() { return no_check;} void set_no_check(int i) { no_check = i;} void reset_hp() { object guild_ob; if (no_check) return ; guild_ob = (object)this_object()->query_guild_ob(); if(!guild_ob) this_object()->set_max_hp((int)this_object()->query_level()*8+4); else guild_ob->set_hp(this_object()); } void reset_gp() { object guild_ob; if (no_check) return ; guild_ob = (object)this_object()->query_guild_ob(); if (!guild_ob) this_object()->set_max_gp(this_object()->query_level()); else guild_ob->set_gp(this_object()); } void reset_carry_cap() { int old_cap, cap, st; object ob, ob1; if (no_check) return ; old_cap = (int)this_object()->query_loc_weight(); st = Str+strtmp+strbon; if (st < 8) cap = 500; else if (st > 28) cap = 3500+(st-28)*300; else cap = ({ 500, 550, 600, 650, 750, 850, 950, 1150, 1300, 1450, 1600, 1750,1900,2100,2300,2500,2700,2950,3200,3500,3850})[st-8]; this_object()->set_max_weight(cap); if (cap >= old_cap) return ; ob = first_inventory(this_object()); while (ob) { ob1 = next_inventory(ob); if (ob->query_weight()) if (ob->move(environment())) { old_cap -= (int)ob->query_weight(); say(this_object()->query_cap_name()+" drops "+ob->short()+ " under strain.\n"); write("Your fading strength makes you drop "+ob->short()+".\n"); } if (cap >= old_cap) return ; ob = ob1; } } void reset_bon_stats() { strbon = 0; dexbon = 0; conbon = 0; intbon = 0; wisbon = 0; chabon = 0; } void reset_all() { call_out("reset_all2",0); } void reset_all2() { /* make sure for reset_all's */ no_check = 0; reset_hp(); reset_gp(); reset_carry_cap(); } int set_str(int i) { Str = i; reset_carry_cap(); return 1; } int set_con(int i) { Con = i; reset_hp(); return 1; } int set_int(int i) { Int = i; reset_gp(); return 1; } int set_dex(int i) { Dex = i; return 1; } int set_wis(int i) { Wis = i; reset_gp(); return 1; } int set_cha(int i) { Cha = i; return 1; } int query_str() { return Str+strtmp+strbon; } int query_int() { return Int+inttmp+intbon; } int query_dex() { return Dex+dextmp+dexbon; } int query_wis() { return Wis+wistmp+wisbon; } int query_con() { return Con+contmp+conbon; } int query_cha() { return Cha+chatmp+chabon; } int query_real_str() { return Str; } int query_real_int() { return Int; } int query_real_dex() { return Dex; } int query_real_wis() { return Wis; } int query_real_con() { return Con; } int query_real_cha() { return Cha; } int query_tmp_str() { return strtmp; } int query_tmp_int() { return inttmp; } int query_tmp_dex() { return dextmp; } int query_tmp_wis() { return wistmp; } int query_tmp_con() { return contmp; } int query_tmp_cha() { return chatmp; } int query_bonus_str() { return strbon; } int query_bonus_int() { return intbon; } int query_bonus_dex() { return dexbon; } int query_bonus_wis() { return wisbon; } int query_bonus_con() { return conbon; } int query_bonus_cha() { return chabon; } int adjust_dex(int i) { Dex += i; return Dex; } int adjust_con(int i) { Con += i; reset_hp(); return Con; } int adjust_str(int i) { Str += i; reset_carry_cap(); return Str; } int adjust_wis(int i) { Wis += i; reset_gp(); return Wis; } int adjust_int(int i) { Int += i; reset_gp(); return Int; } int adjust_cha(int i) { Cha += i; return Cha; } int adjust_tmp_int(int i) { inttmp += i; reset_gp(); return inttmp; } int adjust_tmp_dex(int i) { dextmp += i; return dextmp; } int adjust_tmp_wis(int i) { wistmp += i; reset_gp(); return wistmp; } int adjust_tmp_str(int i) { strtmp += i; reset_carry_cap(); return strtmp; } int adjust_tmp_con(int i) { contmp += i; reset_hp(); return contmp; } int adjust_tmp_cha(int i) { chatmp += i; return chatmp; } int adjust_bonus_int(int i) { intbon += i; reset_gp(); return intbon; } int adjust_bonus_dex(int i) { dexbon += i; return dexbon; } int adjust_bonus_wis(int i) { wisbon += i; reset_gp(); return wisbon; } int adjust_bonus_str(int i) { strbon += i; reset_carry_cap(); return strbon; } int adjust_bonus_con(int i) { conbon += i; reset_hp(); return conbon; } int adjust_bonus_cha(int i) { chabon += i; return chabon; } void update_tmps() { if ( (strtmp||contmp||wistmp||inttmp||dextmp) !=0) write("You feel your abilities become somewhat more normal \n"); strtmp = strtmp/2; contmp = contmp/2; wistmp = wistmp/2; inttmp = inttmp/2; dextmp = dextmp/2; reset_hp(); reset_gp(); reset_carry_cap(); } string stat_string(int i) { if (i<19) return i +""; if (i>28) return i-10+""; if (i==28) return "18/00"; return "18/"+(i-18)+"0"; } /* Add of Sojans code to get the new combat system working */ void set_extra_bonus(string type, int exbon) { switch (type) { case "attack" : extra_attack_bonus=exbon; case "defend" : extra_defend_bonus=exbon; default : 0; } } /* set extra_bonus */ int extra_bonus(string type) { switch (type) { case "attack" : return extra_attack_bonus; case "defend" : return extra_defend_bonus; default : return 0; } } /* extra_bonus */ int query_thac0() { /* calculate thac0 here I don't know how so for now return 10 */ /* Will be a table in guild.c i guess. It just varies from guild to * guild. Base THAC0 is 22, and 20 if the player has a proficiency. * Baldy.. */ return 20; } /* query_thac0 */ void set_magical(int mnm) { magical=mnm; } /* set magical */ int query_magical() { return magical; } /* query_magical */ void set_ac(int bing) { ac=bing; } int query_ac() { return ac; } void adjust_ac(int bing) { ac=ac+bing; }