⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 npcengine.c

📁 Npc Generator
💻 C
📖 第 1 页 / 共 5 页
字号:
/* ---------------------------------------------------------------------- * * npcEngine.c * * by Jamis Buck (jgb3@email.byu.edu) * * NPC generation functions for the Dungeons & Dragons(tm) API.  This file  * is in the public domain. * ---------------------------------------------------------------------- */#include <string.h>#include <ctype.h>#include <stdlib.h>#include <stdio.h>#include "dndconst.h"#include "dndutil.h"#include "npcEngine.h"#include "grammar.h"#include "gameutil.h"#define PREFERRED_CLASS_CHANCE    ( 75 )#define COMMON         ( 20 )#define UNCOMMON       (  8 )#define RARE           (  2 )#define NEVER          (  0 )typedef struct __raceabilities__ RACEABILITIES;typedef struct __abilityscore__ ABILITYSCORE;typedef struct __preferredfeats__ PREFERREDFEATS;typedef struct __preferredweapons__ PREFERREDWEAPONS;typedef struct __preferredspells__ PREFERREDSPELLS;struct __raceabilities__ {  int ability;  int weight;};struct __abilityscore__ {  int ability;  int score;};struct __preferredfeats__ {  int feat;  int weight;};struct __preferredweapons__ {  int weapon;  int weight;};struct __preferredspells__ {  int spell;  int weight;};static const int allLanguages[] = { lnABYSSAL, lnAQUAN, lnAURAN,   lnCELESTIAL, lnCOMMON, lnDRACONIC, lnDWARVEN, lnELVEN, lnGNOME,   lnGOBLIN, lnGIANT, lnGNOLL, lnHALFLING, lnIGNAN, lnINFERNAL, lnORC,   lnSYLVAN, lnTERRAN, lnUNDERCOMMON, 0 };static const int allSkills[] = { skALCHEMY, skANIMALEMPATHY, skAPPRAISE,  skBALANCE, skBLUFF, skCLIMB, skCONCENTRATION, skCRAFT, skDECIPHERSCRIPT,   skDIPLOMACY, skDISABLEDEVICE, skDISGUISE, skESCAPEARTIST, skFORGERY,   skGATHERINFORMATION, skHANDLEANIMAL, skHEAL, skHIDE, skINNUENDO,   skINTIMIDATE, skINTUITDIRECTION, skJUMP, skKNOWLEDGE_ARCANA,   skKNOWLEDGE_RELIGION, skKNOWLEDGE_NATURE, skKNOWLEDGE, skLISTEN,   skMOVESILENTLY, skOPENLOCK, skPERFORM, skPICKPOCKET, skPROFESSION,   skREADLIPS, skRIDE, skSCRY, skSEARCH, skSENSEMOTIVE, skSPEAKLANGUAGE,   skSPELLCRAFT, skSPOT, skSWIM, skTUMBLE, skUSEMAGICDEVICE, skUSEROPE,   skWILDERNESSLORE, 0 };static const int simpleWeapons[] = { wpGAUNTLET, wpUNARMED, wpDAGGER,   wpDAGGER_PUNCHING, wpGAUNTLET_SPIKED, wpMACE_LIGHT, wpSICKLE, wpCLUB,   wpHALFSPEAR, wpMACE_HEAVY, wpMORNINGSTAR, wpQUARTERSTAFF, wpSHORTSPEAR,   wpCROSSBOW_LIGHT, wpDART, wpSLING, wpCROSSBOW_HEAVY, wpJAVELIN, 0 };static const int martialWeapons[] = { wpAXE_THROWING, wpHAMMER_LIGHT,   wpHANDAXE, wpLANCE_LIGHT, wpPICK_LIGHT, wpSAP, wpSWORD_SHORT, wpBATTLEAXE,   wpFLAIL_LIGHT, wpLANCE_HEAVY, wpLONGSWORD, wpPICK_HEAVY, wpRAPIER,   wpSCIMITAR, wpTRIDENT, wpWARHAMMER, wpFALCHION, wpFLAIL_HEAVY, wpGLAIVE,   wpGREATAXE, wpGREATCLUB, wpGREATSWORD, wpGUISARME, wpHALBERD, wpLONGSPEAR,   wpRANSEUR, wpSCYTHE, wpSHORTBOW, wpSHORTBOW_COMPOSITE, wpLONGBOW,   wpLONGBOW_COMPOSITE, 0 };static const int exoticWeapons[] = { wpKUKRI, wpKAMA, wpNUNCHAKU,   wpSIANGHAM, wpSWORD_BASTARD, wpWARAXE_DWARVEN, wpHAMMER_GNOMEHOOKED,   wpAXE_ORCDOUBLE, wpCHAIN_SPIKED, wpFLAIL_DIRE, wpSWORD_TWOBLADED,   wpURGOSH_DWARVEN, wpCROSSBOW_HAND, wpSHURIKEN, wpWHIP,   wpCROSSBOW_REPEATING, wpNET, 0 };static const int schoolsOfMagic[] = { ssUNIVERSAL, ssABJURATION,   ssCONJURATION, ssDIVINATION, ssENCHANTMENT, ssEVOCATION, ssILLUSION,  ssNECROMANCY, ssTRANSMUTATION, 0 };static const int requiredSkills[] = { skSPOT, skLISTEN, skHIDE,   skMOVESILENTLY, 0 };/* preferred feat designations */static PREFERREDFEATS barbarianFeats[] = {  { ftALERTNESS,                  COMMON },  { ftAMBIDEXTERITY,              UNCOMMON*2 },  { ftARMORPROFICIENCY_HEAVY,     RARE },  { ftBLINDFIGHT,                 COMMON },  { ftCOMBATREFLEXES,             COMMON },  { ftDODGE,                      UNCOMMON*2 },  { ftMOBILITY,                   UNCOMMON },  { ftSPRINGATTACK,               RARE },  { ftENDURANCE,                  COMMON },  { ftWEAPONPROFICIENCY_EXOTIC,   RARE },  { ftEXPERTISE,                  RARE },  { ftIMPROVEDDISARM,             RARE },  { ftIMPROVEDTRIP,               RARE },  { ftWHIRLWINDATTACK,            RARE },  { ftGREATFORTITUDE,             UNCOMMON },  { ftIMPROVEDCRITICAL,           UNCOMMON },  { ftIMPROVEDINITIATIVE,         RARE*2 },  { ftIMPROVEDUNARMEDSTRIKE,      RARE },  { ftDEFLECTARROWS,              RARE },  { ftSTUNNINGFIST,               RARE },  { ftIRONWILL,                   UNCOMMON },  { ftLEADERSHIP,                 RARE },  { ftLIGHTNINGREFLEXES,          UNCOMMON },  { ftMOUNTEDCOMBAT,              RARE*2 },  { ftMOUNTEDARCHERY,             RARE },  { ftTRAMPLE,                    RARE*2 },  { ftRIDEBYATTACK,               RARE*2 },  { ftSPIRITEDCHARGE,             RARE },  { ftPOINTBLANKSHOT,             RARE },  { ftFARSHOT,                    RARE },  { ftPRECISESHOT,                RARE },  { ftRAPIDSHOT,                  RARE },  { ftSHOTONTHERUN,               RARE },  { ftPOWERATTACK,                COMMON*2 },  { ftCLEAVE,                     COMMON },  { ftIMPROVEDBULLRUSH,           UNCOMMON },  { ftSUNDER,                     RARE*2 },  { ftGREATCLEAVE,                COMMON },  { ftQUICKDRAW,                  UNCOMMON },  { ftRUN,                        COMMON },  { ftSHIELDPROFICIENCY,          RARE },  { ftSKILLFOCUS,                 RARE },  { ftTOUGHNESS,                  RARE*2 },  { ftTRACK,                      UNCOMMON },  { ftTWOWEAPONFIGHTING,          RARE },  { ftIMPROVEDTWOWEAPONFIGHTING,  RARE },  { ftWEAPONFINESSE,              RARE },  { ftWEAPONFOCUS,                UNCOMMON },  { 0,                            0 }};static PREFERREDWEAPONS barbarianWeapons[] = {  { wpGAUNTLET,            RARE },  { wpUNARMED,             RARE },  { wpDAGGER,              RARE },  { wpDAGGER_PUNCHING,     RARE },  { wpGAUNTLET_SPIKED,     RARE },  { wpMACE_LIGHT,          RARE*2 },  { wpSICKLE,              RARE },  { wpCLUB,                UNCOMMON },  { wpHALFSPEAR,           UNCOMMON },  { wpMACE_HEAVY,          UNCOMMON },  { wpMORNINGSTAR,         UNCOMMON },  { wpQUARTERSTAFF,        RARE },  { wpSHORTSPEAR,          UNCOMMON },  { wpCROSSBOW_LIGHT,      RARE },  { wpDART,                RARE },  { wpSLING,               RARE },  { wpCROSSBOW_HEAVY,      RARE },  { wpJAVELIN,             RARE*2 },  { wpAXE_THROWING,        RARE },  { wpHAMMER_LIGHT,        RARE },  { wpHANDAXE,             RARE },  { wpLANCE_LIGHT,         RARE },  { wpPICK_LIGHT,          RARE },  { wpSAP,                 RARE },  { wpSWORD_SHORT,         UNCOMMON },  { wpBATTLEAXE,           COMMON },  { wpFLAIL_LIGHT,         UNCOMMON },  { wpLANCE_HEAVY,         RARE },  { wpLONGSWORD,           COMMON*2 },  { wpPICK_HEAVY,          RARE },  { wpRAPIER,              RARE },  { wpSCIMITAR,            UNCOMMON },  { wpTRIDENT,             RARE },  { wpWARHAMMER,           COMMON },  { wpFALCHION,            RARE },  { wpFLAIL_HEAVY,         UNCOMMON },  { wpGLAIVE,              RARE },  { wpGREATAXE,            COMMON },  { wpGREATCLUB,           COMMON },  { wpGREATSWORD,          COMMON },  { wpGUISARME,            RARE },  { wpHALBERD,             RARE },  { wpLONGSPEAR,           UNCOMMON },  { wpRANSEUR,             RARE },  { wpSCYTHE,              RARE },  { wpSHORTBOW,            UNCOMMON },  { wpSHORTBOW_COMPOSITE,  UNCOMMON },  { wpLONGBOW,             UNCOMMON },  { wpLONGBOW_COMPOSITE,   UNCOMMON },  { 0,                     0 }};static PREFERREDFEATS bardFeats[] = {  { ftALERTNESS,                  COMMON },  { ftAMBIDEXTERITY,              UNCOMMON },  { ftARMORPROFICIENCY_HEAVY,     RARE },  { ftBLINDFIGHT,                 UNCOMMON },  { ftCOMBATCASTING,              COMMON },  { ftCOMBATREFLEXES,             UNCOMMON },  { ftDODGE,                      COMMON },  { ftMOBILITY,                   COMMON },  { ftSPRINGATTACK,               UNCOMMON },  { ftENDURANCE,                  RARE },  { ftGREATFORTITUDE,             RARE },  { ftIMPROVEDCRITICAL,           RARE },  { ftIMPROVEDINITIATIVE,         UNCOMMON },  { ftIRONWILL,                   RARE },  { ftLEADERSHIP,                 RARE },  { ftLIGHTNINGREFLEXES,          RARE },  { ftMOUNTEDCOMBAT,              RARE },  { ftMOUNTEDARCHERY,             RARE },  { ftTRAMPLE,                    RARE },  { ftRIDEBYATTACK,               RARE },  { ftSPIRITEDCHARGE,             RARE },  { ftPOINTBLANKSHOT,             UNCOMMON },  { ftFARSHOT,                    RARE },  { ftPRECISESHOT,                RARE },  { ftRAPIDSHOT,                  UNCOMMON },  { ftSHOTONTHERUN,               RARE },  { ftPOWERATTACK,                RARE },  { ftCLEAVE,                     RARE },  { ftSUNDER,                     RARE },  { ftQUICKDRAW,                  RARE },  { ftRUN,                        UNCOMMON },  { ftSKILLFOCUS,                 COMMON },  { ftSPELLFOCUS,                 UNCOMMON },  { ftSPELLPENETRATION,           RARE },  { ftTOUGHNESS,                  RARE*2 },  { ftTRACK,                      RARE },  { ftTWOWEAPONFIGHTING,          RARE },  { ftWEAPONFINESSE,              UNCOMMON },  { ftWEAPONFOCUS,                RARE },  { ftBREWPOTION,                 UNCOMMON*2 },  { ftCRAFTMAGICARMSANDARMOR,     UNCOMMON },  { ftCRAFTROD,                   UNCOMMON },  { ftCRAFTSTAFF,                 UNCOMMON },  { ftCRAFTWAND,                  UNCOMMON },  { ftCRAFTWONDROUSITEM,          UNCOMMON*2 },  { ftFORGERING,                  UNCOMMON },  { ftSCRIBESCROLL,               UNCOMMON*2 },  { ftEMPOWERSPELL,               RARE },  { ftENLARGESPELL,               RARE },  { ftEXTENDSPELL,                RARE },  { ftHEIGHTENSPELL,              RARE },  { ftMAXIMIZESPELL,              RARE },  { ftSILENTSPELL,                RARE },  { ftSTILLSPELL,                 RARE },  { 0,                            0 }};static PREFERREDWEAPONS bardWeapons[] = {  { wpGAUNTLET,            RARE },  { wpUNARMED,             RARE },  { wpDAGGER,              COMMON },  { wpDAGGER_PUNCHING,     RARE },  { wpGAUNTLET_SPIKED,     RARE },  { wpMACE_LIGHT,          RARE*2 },  { wpSICKLE,              RARE },  { wpCLUB,                RARE },  { wpHALFSPEAR,           RARE },  { wpMACE_HEAVY,          UNCOMMON },  { wpMORNINGSTAR,         UNCOMMON },  { wpQUARTERSTAFF,        UNCOMMON },  { wpSHORTSPEAR,          UNCOMMON },  { wpCROSSBOW_LIGHT,      RARE },  { wpDART,                RARE },  { wpSLING,               RARE },  { wpCROSSBOW_HEAVY,      RARE },  { wpJAVELIN,             RARE },  { wpSAP,                 COMMON },  { wpSWORD_SHORT,         UNCOMMON },  { wpLONGSWORD,           COMMON*2 },  { wpRAPIER,              UNCOMMON },  { wpSHORTBOW,            UNCOMMON },  { wpSHORTBOW_COMPOSITE,  UNCOMMON },  { wpLONGBOW,             UNCOMMON },  { wpLONGBOW_COMPOSITE,   UNCOMMON },  { wpWHIP,                RARE },  { 0,                     0 }};static PREFERREDSPELLS prefBardSpells[] = {  { spBLINDNESSDEAFNESS,                     RARE },  { spBLINK,                                 UNCOMMON },  { spBLUR,                                  UNCOMMON },  { spCHARMMONSTER,                          COMMON },  { spCHARMPERSON,                           COMMON },  { spCLAIRAUDIENCECLAIRVOYANCE,             UNCOMMON },  { spCURECRITICALWOUNDS,                    COMMON },  { spCURELIGHTWOUNDS,                       COMMON },  { spCUREMODERATEWOUNDS,                    COMMON },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -