Ejemplo n.º 1
0
void Func_ModifyAbilityScore (CGameObject *ob, char *value) {
    int abil, val;
    CNWSCreature *cre = (CNWSCreature *)ob;

    if (ob == NULL                                     ||
        (cre = ob->vtable->AsNWSCreature(ob)) == NULL  ||
        cre->cre_stats == NULL                         ||
        sscanf(value, "%d %d", &abil, &val) != 2) {

        snprintf(value, strlen(value), "-1");
        return;
    }

    switch (abil) {
        case ABILITY_STRENGTH:
            CNWSCreatureStats__SetSTRBase(cre->cre_stats, cre->cre_stats->cs_str + val);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_str);
            break;

        case ABILITY_DEXTERITY:
            CNWSCreatureStats__SetDEXBase(cre->cre_stats, cre->cre_stats->cs_dex + val);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_dex);
            break;

        case ABILITY_CONSTITUTION:
            CNWSCreatureStats__SetCONBase(cre->cre_stats, cre->cre_stats->cs_con + val, 0);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_con);
            break;

        case ABILITY_INTELLIGENCE:
            CNWSCreatureStats__SetINTBase(cre->cre_stats, cre->cre_stats->cs_int + val);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_int);
            break;

        case ABILITY_WISDOM:
            CNWSCreatureStats__SetWISBase(cre->cre_stats, cre->cre_stats->cs_wis + val);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_wis);
            break;

        case ABILITY_CHARISMA:
            CNWSCreatureStats__SetCHABase(cre->cre_stats, cre->cre_stats->cs_cha + val);
            snprintf(value, strlen(value), "%d", cre->cre_stats->cs_cha);
            break;
    }
}
Ejemplo n.º 2
0
void CNWSCreatureStats_s::SetDEXBase(uint8_t DEXBase) {
	CNWSCreatureStats__SetDEXBase(this, DEXBase);
}