00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "person-obj.hpp"
00025
00026 #include "skill-obj.hpp"
00027 #include "dice.hpp"
00028
00029 static char *skillTable[] = {
00030 #include "skill_strings.h"
00031
00032 };
00033
00034 void skillObj::AnimalHandlingCascade(){
00035 switch(d1d6()){
00036 case 1:
00037 case 2:
00038 this->setSkill(skillTable[GUARD_HUNTING_BEASTS]);
00039 break;
00040 case 3:
00041 case 4:
00042 this->setSkill(skillTable[EQUESTRIAN]);
00043 break;
00044 default:
00045 this->setSkill(skillTable[HERDING]);
00046 break;
00047 };
00048
00049
00050 }
00051
00052 void skillObj::ScienceCascade(){
00053 switch (randxInRange(1,7)){
00054 case 1:
00055 this->setSkill(skillTable[BIOLOGY]);
00056 break;
00057 case 2:
00058 this->setSkill(skillTable[CHEMISTRY]);
00059 break;
00060 case 3:
00061 this->setSkill(skillTable[GENETICS]);
00062 break;
00063 case 4:
00064 this->setSkill(skillTable[FORENSIC]);
00065 break;
00066 case 5:
00067 this->setSkill(skillTable[MEDICAL]);
00068 break;
00069 case 6:
00070 this->setSkill(skillTable[PHYSICS]);
00071 break;
00072 case 7:
00073 this->setSkill(skillTable[ROBOTICS]);
00074 break;
00075 };
00076 }
00077
00078 void skillObj::LargeBladeCascade(){
00079 switch(d1d6()){
00080 case 1:
00081 case 2:
00082 this->setSkill(skillTable[BROADSWORD]);
00083 break;
00084 case 3:
00085 case 4:
00086 this->setSkill(skillTable[CUTLASS]);
00087 break;
00088 case 5:
00089 case 6:
00090 this->setSkill(skillTable[SWORD]);
00091 break;
00092 };
00093
00094 }
00095 void skillObj::SmallBladeCascade(){
00096 }
00097
00098 void skillObj::GunCombatCascade(){
00099 switch (d1d6()){
00100 case 1:
00101 this->setSkill(skillTable[ENERGY_WEAPONS]);
00102 break;
00103 case 2:
00104 this->setSkill(skillTable[HANDGUN]);
00105 break;
00106 case 3:
00107 this->setSkill(skillTable[LASER_WEAPONS]);
00108 break;
00109 case 4:
00110 this->setSkill(skillTable[NEURAL_WEAPONS]);
00111 break;
00112 case 5:
00113 this->setSkill(skillTable[RIFLEMAN]);
00114 break;
00115 default:
00116 this->setSkill(skillTable[SUBMACHINEGUN]);
00117 break;
00118
00119 }
00120
00121 }
00122
00123
00124 void skillObj::BladeCombatCascade(){
00125 switch(d1d6()){
00126 case 1:
00127 this->setSkill(skillTable[AXE]);
00128 break;
00129 case 2:
00130 this->setSkill(skillTable[CUDGEL]);
00131 break;
00132 case 3:
00133 this->setSkill(skillTable[FOIL]);
00134 break;
00135 case 4:
00136 this->LargeBladeCascade();
00137 break;
00138 case 5:
00139 this->setSkill(skillTable[POLEARM]);
00140 break;
00141 default:
00142 this->SmallBladeCascade();
00143 break;
00144 };
00145
00146 }
00147
00148 void skillObj::AircraftCascade(){
00149 switch(randxInRange(1,4)){
00150 case 1:
00151 this->setSkill(skillTable[HELICOPTER]);
00152 break;
00153 case 2:
00154 this->setSkill(skillTable[JET_PROPELLED_AIRCRAFT]);
00155 break;
00156
00157 case 3:
00158 this->setSkill(skillTable[LIGHTER_THAN_AIR_CRAFT]);
00159 break;
00160 case 4:
00161 this->setSkill(skillTable[PROPELLER_DRIVEN_CRAFT]);
00162 break;
00163 };
00164
00165 }
00166
00167 void skillObj::AcademicCascade(personObj *p){
00168 switch(d1d6()){
00169 case 1:
00170 this->setSkill(skillTable[ADMIN]);
00171 break;
00172 case 2:
00173 this->setSkill(skillTable[HISTORY]);
00174 break;
00175 case 3:
00176 this->setSkill(skillTable[LINGUISTICS]);
00177 break;
00178 case 4:
00179 this->setSkill(skillTable[PERSUASION]);
00180 break;
00181 case 5:
00182 this->ScienceCascade();
00183 break;
00184 case 6:
00185 p->setEducation(p->getEducation()+1);
00186 break;
00187 };
00188 }
00189
00190 void skillObj::ArchaicWeaponCascade(){
00191 switch(randxInRange(1,7)){
00192 case 1:
00193 this->setSkill(skillTable[BLOWGUN]);
00194 break;
00195 case 2:
00196 this->setSkill(skillTable[BOLA]);
00197 break;
00198 case 3:
00199 this->setSkill(skillTable[BOOMERANG]);
00200 break;
00201 case 4:
00202 this->setSkill(skillTable[BOW]);
00203 break;
00204 case 5:
00205 this->setSkill(skillTable[CROSSBOW]);
00206 break;
00207 case 6:
00208 this->setSkill(skillTable[EARLY_FIREARMS]);
00209 break;
00210 default:
00211 this->setSkill(skillTable[SLING]);
00212 break;
00213 };
00214
00215
00216 }
00217
00218 skillObj::skillObj(personObj *p,int ix,int l) : skillEntry(skillTable[ix],l){
00219
00224 switch(ix){
00225 case ACADEMIC:
00226 this->AcademicCascade(p);
00227 break;
00228 case BLADE_COMBAT:
00229 this->BladeCombatCascade();
00230 break;
00231 case GUN_COMBAT:
00232 this->GunCombatCascade();
00233 break;
00234 case SCIENCE:
00235 this->ScienceCascade();
00236 break;
00237 case ANIMAL_HANDLING:
00238 this->AnimalHandlingCascade();
00239 break;
00240 case ARCHAIC_WEAPONS:
00241 this->ArchaicWeaponCascade();
00242 break;
00243
00244 default:
00245 break;
00246 };
00247
00248 }
00249
00250
00251 skillObj::skillObj(personObj* p,int ix) {
00252 skillObj(p,ix,1);
00253 }