#include <living/skills.h>#include <living/skill_attributes.h>#include <thing/properties.h>#include <attributes.h>#include <new_skills.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
| #define | SIG(x) (x?(x>0?1:-1):0) |
Funktionen | |
| protected int | StdSkill_Nightvision (object me, string sname, mixed sinfo) |
| protected mapping | StdSkill_Bihand (object me, string sname, mapping sinfo) |
| protected mapping | StdSkill_Fight_sword (object me, string sname, mapping sinfo) |
| protected mapping | StdSkill_Fight_hands (object me, string sname, mapping sinfo) |
| protected int | StdSkill_Booze (object me, string sname, mapping sinfo) |
| #define NEED_PROTOTYPES |
Definiert in Zeile 12 der Datei std_skills.c.
Definiert in Zeile 21 der Datei std_skills.c.
Wird benutzt von StdSkill_Fight_hands() und StdSkill_Fight_sword().
| protected mapping StdSkill_Bihand | ( | object | me, | |
| string | sname, | |||
| mapping | sinfo | |||
| ) |
Definiert in Zeile 53 der Datei std_skills.c.
Benutzt A_STR, MAX_ABILITY, QueryAttribute(), QuerySkillAttribute(), SA_DAMAGE, SI_SKILLABILITY und SI_SKILLDAMAGE.
00053 { 00054 int abil,val; 00055 00056 // printf("Bihand: %O\n",sinfo); 00057 if (!sinfo) return 0; 00058 abil=sinfo[SI_SKILLABILITY]; 00059 val=(abil*(QueryAttribute(A_STR)+33))/MAX_ABILITY; 00060 val=(val*QuerySkillAttribute(SA_DAMAGE))/100; 00061 sinfo[SI_SKILLDAMAGE]+=val; 00062 // + max. 53 00063 return sinfo; 00064 }

| protected int StdSkill_Booze | ( | object | me, | |
| string | sname, | |||
| mapping | sinfo | |||
| ) |
Definiert in Zeile 93 der Datei std_skills.c.
Benutzt MAX_ABILITY, SI_SKILLABILITY und SI_SKILLARG.
00093 { 00094 int abil,val; 00095 00096 val=0; 00097 if (!sinfo || (val=sinfo[SI_SKILLARG])<=0) 00098 return val; 00099 abil=sinfo[SI_SKILLABILITY]; 00100 val-=(val*abil)/(MAX_ABILITY+2500); // Bis zu 80% Abzug bei Alkoholikern. 00101 if (val<=0) val=1; 00102 return val; 00103 }
| protected mapping StdSkill_Fight_hands | ( | object | me, | |
| string | sname, | |||
| mapping | sinfo | |||
| ) |
Definiert in Zeile 79 der Datei std_skills.c.
Benutzt A_DEX, A_STR, MAX_ABILITY, QueryAttribute(), QuerySkillAttribute(), SA_DAMAGE, SI_SKILLABILITY, SI_SKILLDAMAGE und SIG.
00079 { 00080 int abil,asig,val; 00081 00082 if (!sinfo) return 0; 00083 abil=sinfo[SI_SKILLABILITY];asig=SIG(abil); 00084 val=(abil*(QueryAttribute(A_STR) + 00085 QueryAttribute(A_DEX)*3*asig + 00086 100))/MAX_ABILITY; 00087 val=(val*QuerySkillAttribute(SA_DAMAGE))/100; 00088 sinfo[SI_SKILLDAMAGE]+=val; 00089 // + max. 180 00090 return sinfo; 00091 }

| protected mapping StdSkill_Fight_sword | ( | object | me, | |
| string | sname, | |||
| mapping | sinfo | |||
| ) |
Definiert in Zeile 66 der Datei std_skills.c.
Benutzt A_DEX, A_STR, MAX_ABILITY, QueryAttribute(), QuerySkillAttribute(), SA_DAMAGE, SI_SKILLABILITY, SI_SKILLDAMAGE und SIG.
00066 { 00067 int abil,asig,val; 00068 00069 abil=sinfo[SI_SKILLABILITY];asig=SIG(abil); 00070 val=(abil*(QueryAttribute(A_STR) + 00071 QueryAttribute(A_DEX)*asig + 00072 33))/MAX_ABILITY; 00073 val=(val*QuerySkillAttribute(SA_DAMAGE))/100; 00074 sinfo[SI_SKILLDAMAGE]+=val; 00075 // + max. 73 00076 return sinfo; 00077 }

| protected int StdSkill_Nightvision | ( | object | me, | |
| string | sname, | |||
| mixed | sinfo | |||
| ) |
Definiert in Zeile 23 der Datei std_skills.c.
Benutzt light(), MAX_ABILITY, ModifySkill(), P_PLAYER_LIGHT, QueryProp(), SI_LASTLIGHT und SI_SKILLABILITY.
Wird benutzt von CannotSee().
00023 { 00024 int abil,light,llt,dt,res; 00025 00026 if (!sinfo || !environment()) return 0; 00027 if (intp(sinfo)) sinfo=([SI_SKILLABILITY:sinfo]); 00028 if (!mappingp(sinfo)) return 0; 00029 if ((light=QueryProp(P_PLAYER_LIGHT))>0) { 00030 ModifySkill(sname,([SI_LASTLIGHT:time()])); 00031 return light; 00032 } 00033 abil=sinfo[SI_SKILLABILITY]; 00034 if (!(llt=sinfo[SI_LASTLIGHT])) { 00035 ModifySkill(sname,([SI_LASTLIGHT:time()])); 00036 dt=0; 00037 } else { 00038 dt=time()-llt; 00039 if (dt<0) dt=0; 00040 if (dt>86400) dt=86400; 00041 } 00042 00043 res=(abil*dt)/(20*MAX_ABILITY)+light; 00044 if (res<=0) { 00045 res--; // Wert muss !=0 sein 00046 if (res<-MAX_ABILITY) res=-MAX_ABILITY; 00047 } else { 00048 if (res>MAX_ABILITY) res=MAX_ABILITY; 00049 } 00050 return res; 00051 }


1.6.3