Example #1
0
static bool GetRaceValue_Execute(COMMAND_ARGS, UInt32 whichVal)
{
	*result = 0;
	UInt32 intVal = 0;
	TESRace* race = 0;
	UInt32 isFemaleArg = 0; // male
	ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &intVal, &race, &isFemaleArg);

	bool bIsFemale = (isFemaleArg == 0) ? false : true;
	if (!race) {
		if (!thisObj) return true;
		TESNPC* npc = (TESNPC*)Oblivion_DynamicCast(thisObj->baseForm, 0, RTTI_TESForm, RTTI_TESNPC, 0);
		if (!npc) return true;
		race = npc->race.race;
		if (!race) return true;
		bIsFemale = npc->actorBaseData.IsFemale();
	}

	switch (whichVal) {
		case kRace_Attribute: 
			{
				if (intVal > kActorVal_Luck) return true;
				*result = race->GetBaseAttribute(intVal, bIsFemale);
				break;
			}
		case kRace_BonusSkill: 
			{
				if (!IsSkill(intVal)) return true;
				*result = race->GetSkillBonus(intVal);
				break;
			}
		case kRace_IsBonusSkill:
			{
				if (!IsSkill(intVal)) return true;
				*result = race->IsBonusSkill(intVal);
				break;
			}
		case kRace_NthBonusSkill:
			{
				if (intVal > 6) return true;
				*result = race->GetNthBonusSkill(intVal);
				break;
			}
		case kRace_NthSpell:
			{
				UInt32* refResult = (UInt32*)result;
				SpellListVisitor visitor(&race->spells.spellList);
				TESForm* form = visitor.GetNthInfo(intVal);
				SpellItem* spell = (SpellItem*)Oblivion_DynamicCast(form, 0, RTTI_TESForm, RTTI_SpellItem, 0);
				if (spell) {
					*refResult = spell->refID;
				}
				break;
			}

	}
	return true;
}
Example #2
0
static bool Cmd_GetRequiredSkillExp_Execute(COMMAND_ARGS)
{
	SInt32 av = -1;
	*result = -1.0;
	if (ExtractArgs(PASS_EXTRACT_ARGS, &av) && IsSkill(av) && *g_thePlayer) {
		av -= kActorVal_Armorer;
		*result = (*g_thePlayer)->requiredSkillExp[av];
	}

	return true;
}
Example #3
0
static bool Cmd_GetPlayerSkillAdvances_Execute(COMMAND_ARGS)
{
	*result = 0;
	UInt32 valSkill = 0;

	if (!ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &valSkill))
		return true;
	if (!IsSkill(valSkill)) return true;

	*result = (*g_thePlayer)->GetSkillAdvanceCount(valSkill);
	return true;
}
Example #4
0
// (expValue:float) GetPlayerSkillUse skill:actor value
static bool Cmd_GetPlayerSkillUse_Execute(COMMAND_ARGS)
{
	*result = 0;
	UInt32 valSkill = 0;

	if (!ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &valSkill))
		return true;
	if (!IsSkill(valSkill)) return true;

	*result = (*g_thePlayer)->skillExp[valSkill - kActorVal_Armorer];
	return true;
}
Example #5
0
// (expValue:float) IncrementPlayerSkillUse skill:actor value whichTrigger
static bool Cmd_ModPlayerSkillExp_Execute(COMMAND_ARGS)
{
	*result = 0;

	UInt32 valSkill = 0;
	float expChange = 0.0;

	if (!ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &valSkill, &expChange))
		return true;
	if (!IsSkill(valSkill)) return true;

	(*g_thePlayer)->ChangeExperience(valSkill, expChange);
	*result = (*g_thePlayer)->skillExp[valSkill-kActorVal_Armorer];

	return true;
}
Example #6
0
// (expValue:float) IncrementPlayerSkillUse skill:actor value whichTrigger
static bool Cmd_IncrementPlayerSkillUse_Execute(COMMAND_ARGS)
{
	*result = 0;

	UInt32 valSkill = 0;
	UInt32 whichUse = 0;
	float howManyTimes = 1.0;

	if (!ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &valSkill, &whichUse, &howManyTimes))
		return true;
	if (!IsSkill(valSkill)) return true;

	(*g_thePlayer)->ModExperience(valSkill, whichUse, howManyTimes);

	*result = (*g_thePlayer)->skillExp[valSkill-kActorVal_Armorer];
	return true;
}
Example #7
0
static bool Cmd_IsMajor_Execute(COMMAND_ARGS)
{
    *result = 0;

    UInt32 skill = 0;
    TESClass* theClass = NULL;

    ExtractArgs(paramInfo, arg1, opcodeOffsetPtr, thisObj, arg3, scriptObj, eventList, &skill, &theClass);

    if (!IsSkill(skill)) return true;
    if (!theClass) {
        if (!thisObj) return true;
        TESNPC* npc = (TESNPC *)Oblivion_DynamicCast(thisObj->baseForm, 0, RTTI_TESForm, RTTI_TESNPC, 0);
        if (!npc || !npc->npcClass) return true;
        theClass = npc->npcClass;
    }

    if (theClass->IsMajorSkill(skill)) {
        *result = 1;
    }
    return true;
}