Jump to content

Working with race conversion and graphics


pdmoerman

Recommended Posts

I'm working on the same mod, which is creating a new playable race. The race is based on a Nord, but to go into combat, the player uses a power which transforms them into a beast.

The magic effect worked when I tested it, with one problem. After the effect is active, I couldn't open the character menu (to be able to equip a dispel power for example), and the actual graphics didn't change. The damage went up a bit as it was supposed to, which means the race changed in terms of back end stuff, but I want to be able to open the menu and see that the form actually changed.

I used a Werewolf magic effect, but I didn't mark the transform-into races playable, just the base one. (I only want the Nord based race to be able to be selected in Helgen, not the transformations.) How do I fix this? With scripting, or is there an easier way? I've been using the actual Werewolf race as a guideline, but I'm not sure where I went wrong.

 

Thanks for any help!

Link to comment
Share on other sites

I looked around some more and came up with the following, however, the compiler is tripping up on the Race associated functions and the ActiveMagicEffect declaration. I was trying to get the spell caster in case I add an NPC of this race, so it doesn't transform the player when the NPC uses the power. Anybody? Thanks.

Scriptname PM_WolfFormChangeScript extends ObjectReference

Actor Property spellCaster auto
bool Property casterIsPlayer auto
Race Property wolfForm auto

Event OnSpellCast(Form PM_HBWolfFormLesserPower)
	ActiveMagicEffect wolfFormMagicEffect = PM_HBWolfFormChangeEffect
	wolfForm = Race.GetRace("PM_HBWolfFormRace")
	spellCaster = wolfFormMagicEffect.GetCasterActor()
	
	If spellCaster == Game.GetPlayer()
		casterIsPlayer = True
	Else
		casterIsPlayer = False
	EndIf
	
	changeRace(spellCaster, wolfForm, casterIsPlayer)
EndEvent

Function changeRace(Actor target, Race targetRace, bool isPlayable)
	If target.GetRace() != targetRace
		If isPlayable
			targetRace.MakePlayable()
		Else
			targetRace.MakeUnPlayable()
		EndIf
		
		target.SetRace(targetRace)
	EndIf

EndFunction
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...