bool NewPlayerTable(TPlayerTable* table,
const char* name,
BYTE job,
BYTE shape,
BYTE bEmpire,
BYTE bCon,
BYTE bInt,
BYTE bStr,
BYTE bDex)
{
if (job >= JOB_MAX_NUM)
return false;
memset(table, 0, sizeof(TPlayerTable));
strlcpy(table->name, name, sizeof(table->name));
table->level = 55;
table->job = job;
table->voice = 0;
table->part_base = shape;
table->st = JobInitialPoints[job].st;
table->dx = JobInitialPoints[job].dx;
table->ht = JobInitialPoints[job].ht;
table->iq = JobInitialPoints[job].iq;
table->hp = JobInitialPoints[job].max_hp + table->ht * JobInitialPoints[job].hp_per_ht;
table->sp = JobInitialPoints[job].max_sp + table->iq * JobInitialPoints[job].sp_per_iq;
table->stamina = JobInitialPoints[job].max_stamina;
for (int i = 1; i < 55; ++i)
{
int iHP = number(JobInitialPoints[job].hp_per_lv_begin, JobInitialPoints[job].hp_per_lv_end);
int iSP = number(JobInitialPoints[job].sp_per_lv_begin, JobInitialPoints[job].sp_per_lv_end);
table->sRandomHP += iHP;
table->sRandomSP += iSP;
table->stat_point += 3;
}
table->hp += table->sRandomHP;
table->sp += table->sRandomSP;
#if defined(ENABLE_WOLFMAN_CHARACTER) && defined(USE_LYCAN_CREATE_POSITION)
table->x = LYCAN_CREATE_START_X(bEmpire, job) + number(-300, 300);
table->y = LYCAN_CREATE_START_Y(bEmpire, job) + number(-300, 300);
#else
table->x = CREATE_START_X(bEmpire) + number(-300, 300);
table->y = CREATE_START_Y(bEmpire) + number(-300, 300);
#endif
table->z = 0;
table->dir = 0;
table->playtime = 0;
table->gold = 10000000;
table->skill_group = 0;
return true;
}