src/skill-obj.cpp

00001 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
00002 /*
00003  * frpuniverse
00004  * Copyright (C) Peter L. Berghold 2008 <Peter@Berghold.net>
00005  * 
00006  * frpuniverse is free software.
00007  * 
00008  * You may redistribute it and/or modify it under the terms of the
00009  * GNU General Public License, as published by the Free Software
00010  * Foundation; either version 2 of the License, or (at your option)
00011  * any later version.
00012  * 
00013  * frpuniverse is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016  * See the GNU General Public License for more details.
00017  * 
00018  * You should have received a copy of the GNU General Public License
00019  * along with frpuniverse.  If not, write to:
00020  *      The Free Software Foundation, Inc.,
00021  *      51 Franklin Street, Fifth Floor
00022  *      Boston, MA  02110-1301, USA.
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 }

Generated on Fri Mar 7 16:40:53 2008 for frpuniverse by  doxygen 1.4.7