📄 dndutil.c
字号:
/* ---------------------------------------------------------------------- * * dndutil.c * * by Jamis Buck (jgb3@email.byu.edu) * * Utility functions for the Dungeons & Dragons(tm) API. This file is in * the public domain. * ---------------------------------------------------------------------- *//* ---------------------------------------------------------------------- * * Dependencies * ---------------------------------------------------------------------- */#include <string.h>#include "dndconst.h"#include "dndutil.h"/* ---------------------------------------------------------------------- * * Constants * ---------------------------------------------------------------------- */#if !defined(NULL)#define NULL ( 0 )#endif/* ---------------------------------------------------------------------- * * Data types * ---------------------------------------------------------------------- */typedef struct __skillsforclass__ SKILLSFORCLASS;typedef struct __featprereq__ FEATPREREQ;typedef struct __spellsforclass__ SPELLSFORCLASS;typedef struct __racialbonus__ RACIALBONUS;typedef int SPELLMATRIX[20][10];struct __spellsforclass__ { int spell; int level;};struct __featprereq__ { int preReqType; int data1; int data2;};struct __skillsforclass__ { int skill; int classSkill;};struct __racialbonus__ { int type; int data; int bonus;};/* ---------------------------------------------------------------------- * * Data definitions * ---------------------------------------------------------------------- *//* class and cross-class skill designations */static SKILLSFORCLASS barbarianSkills[] = { { skALCHEMY, 0 }, { skAPPRAISE, 0 }, { skBALANCE, 0 }, { skBLUFF, 0 }, { skCLIMB, 1 }, { skCONCENTRATION, 0 }, { skCRAFT, 1 }, { skDIPLOMACY, 0 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 0 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 1 }, { skHEAL, 0 }, { skHIDE, 0 }, { skINNUENDO, 0 }, { skINTIMIDATE, 1 }, { skINTUITDIRECTION, 1 }, { skJUMP, 1 }, { skKNOWLEDGE_ARCANA, 0 }, { skKNOWLEDGE_RELIGION, 0 }, { skKNOWLEDGE_NATURE, 0 }, { skKNOWLEDGE, 0 }, { skLISTEN, 1 }, { skMOVESILENTLY, 0 }, { skOPENLOCK, 0 }, { skPERFORM, 0 }, { skPICKPOCKET, 0 }, { skPROFESSION, 0 }, { skRIDE, 1 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 0 }, { skSPEAKLANGUAGE, 0 }, { skSPELLCRAFT, 0 }, { skSPOT, 0 }, { skSWIM, 1 }, { skTUMBLE, 0 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 1 }, { 0, 0 }};static SKILLSFORCLASS bardSkills[] = { { skALCHEMY, 1 }, { skAPPRAISE, 1 }, { skBALANCE, 1 }, { skBLUFF, 1 }, { skCLIMB, 1 }, { skCONCENTRATION, 1 }, { skCRAFT, 1 }, { skDECIPHERSCRIPT, 1 }, { skDIPLOMACY, 1 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 1 }, { skESCAPEARTIST, 1 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 1 }, { skHANDLEANIMAL, 0 }, { skHEAL, 0 }, { skHIDE, 1 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 1 }, { skJUMP, 1 }, { skKNOWLEDGE_ARCANA, 1 }, { skKNOWLEDGE_RELIGION, 1 }, { skKNOWLEDGE_NATURE, 1 }, { skKNOWLEDGE, 1 }, { skLISTEN, 1 }, { skMOVESILENTLY, 1 }, { skOPENLOCK, 0 }, { skPERFORM, 1 }, { skPICKPOCKET, 1 }, { skPROFESSION, 1 }, { skRIDE, 0 }, { skSCRY, 1 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 1 }, { skSPEAKLANGUAGE, 1 }, { skSPELLCRAFT, 1 }, { skSPOT, 0 }, { skSWIM, 1 }, { skTUMBLE, 1 }, { skUSEMAGICDEVICE, 1 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 0 }, { 0, 0 }};static SKILLSFORCLASS clericSkills[] = { { skALCHEMY, 0 }, { skAPPRAISE, 0 }, { skBALANCE, 0 }, { skBLUFF, 0 }, { skCLIMB, 0 }, { skCONCENTRATION, 1 }, { skCRAFT, 1 }, { skDIPLOMACY, 1 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 0 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 0 }, { skHEAL, 1 }, { skHIDE, 0 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 0 }, { skJUMP, 0 }, { skKNOWLEDGE_ARCANA, 1 }, { skKNOWLEDGE_RELIGION, 1 }, { skKNOWLEDGE_NATURE, 0 }, { skKNOWLEDGE, 0 }, { skLISTEN, 0 }, { skMOVESILENTLY, 0 }, { skOPENLOCK, 0 }, { skPERFORM, 0 }, { skPICKPOCKET, 0 }, { skPROFESSION, 1 }, { skRIDE, 0 }, { skSCRY, 1 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 0 }, { skSPEAKLANGUAGE, 0 }, { skSPELLCRAFT, 1 }, { skSPOT, 0 }, { skSWIM, 0 }, { skTUMBLE, 0 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 0 }, { 0, 0 }};static SKILLSFORCLASS druidSkills[] = { { skALCHEMY, 0 }, { skANIMALEMPATHY, 1 }, { skAPPRAISE, 0 }, { skBALANCE, 0 }, { skBLUFF, 0 }, { skCLIMB, 0 }, { skCONCENTRATION, 1 }, { skCRAFT, 1 }, { skDIPLOMACY, 1 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 0 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 1 }, { skHEAL, 1 }, { skHIDE, 0 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 1 }, { skJUMP, 0 }, { skKNOWLEDGE_ARCANA, 0 }, { skKNOWLEDGE_RELIGION, 0 }, { skKNOWLEDGE_NATURE, 1 }, { skKNOWLEDGE, 0 }, { skLISTEN, 0 }, { skMOVESILENTLY, 0 }, { skOPENLOCK, 0 }, { skPERFORM, 0 }, { skPICKPOCKET, 0 }, { skPROFESSION, 1 }, { skRIDE, 0 }, { skSCRY, 1 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 0 }, { skSPEAKLANGUAGE, 0 }, { skSPELLCRAFT, 1 }, { skSPOT, 0 }, { skSWIM, 1 }, { skTUMBLE, 0 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 1 }, { 0, 0 }};static SKILLSFORCLASS fighterSkills[] = { { skALCHEMY, 0 }, { skAPPRAISE, 0 }, { skBALANCE, 0 }, { skBLUFF, 0 }, { skCLIMB, 1 }, { skCONCENTRATION, 0 }, { skCRAFT, 1 }, { skDIPLOMACY, 0 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 0 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 1 }, { skHEAL, 0 }, { skHIDE, 0 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 0 }, { skJUMP, 1 }, { skKNOWLEDGE_ARCANA, 0 }, { skKNOWLEDGE_RELIGION, 0 }, { skKNOWLEDGE_NATURE, 0 }, { skKNOWLEDGE, 0 }, { skLISTEN, 0 }, { skMOVESILENTLY, 0 }, { skOPENLOCK, 0 }, { skPERFORM, 0 }, { skPICKPOCKET, 0 }, { skPROFESSION, 0 }, { skRIDE, 1 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 0 }, { skSPEAKLANGUAGE, 0 }, { skSPELLCRAFT, 0 }, { skSPOT, 0 }, { skSWIM, 1 }, { skTUMBLE, 0 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 0 }, { 0, 0 }};static SKILLSFORCLASS monkSkills[] = { { skALCHEMY, 0 }, { skAPPRAISE, 0 }, { skBALANCE, 1 }, { skBLUFF, 0 }, { skCLIMB, 1 }, { skCONCENTRATION, 1 }, { skCRAFT, 1 }, { skDIPLOMACY, 1 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 1 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 0 }, { skHEAL, 0 }, { skHIDE, 1 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 0 }, { skJUMP, 1 }, { skKNOWLEDGE_ARCANA, 1 }, { skKNOWLEDGE_RELIGION, 0 }, { skKNOWLEDGE_NATURE, 0 }, { skKNOWLEDGE, 0 }, { skLISTEN, 1 }, { skMOVESILENTLY, 1 }, { skOPENLOCK, 0 }, { skPERFORM, 1 }, { skPICKPOCKET, 0 }, { skPROFESSION, 1 }, { skRIDE, 0 }, { skSEARCH, 0 }, { skSENSEMOTIVE, 0 }, { skSPEAKLANGUAGE, 0 }, { skSPELLCRAFT, 0 }, { skSPOT, 0 }, { skSWIM, 1 }, { skTUMBLE, 1 }, { skUSEROPE, 0 }, { skWILDERNESSLORE, 0 }, { 0, 0 }};static SKILLSFORCLASS paladinSkills[] = { { skALCHEMY, 0 }, { skAPPRAISE, 0 }, { skBALANCE, 0 }, { skBLUFF, 0 }, { skCLIMB, 0 }, { skCONCENTRATION, 1 }, { skCRAFT, 1 }, { skDIPLOMACY, 1 }, { skDISABLEDEVICE, 0 }, { skDISGUISE, 0 }, { skESCAPEARTIST, 0 }, { skFORGERY, 0 }, { skGATHERINFORMATION, 0 }, { skHANDLEANIMAL, 1 }, { skHEAL, 1 }, { skHIDE, 0 }, { skINNUENDO, 0 }, { skINTIMIDATE, 0 }, { skINTUITDIRECTION, 0 }, { skJUMP, 0 }, { skKNOWLEDGE_ARCANA, 0 },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -