Elric
|
Category: |
Code |
Level: |
Intermediate 
|
Created: |
Sunday January 23, 2011 - 19:36 |
Updated: |
Sunday June 16, 2013 - 19:51 |
Views: |
13819 |
Summary: |
Almost all you need to know about intermediate coding... |
|
Rating
Staff says
2.0
|
Members say
3.8
|
Average
3.6/5.0
|
7 votes
|
Making New Hero
Note A- Make a new ini with your hero name in lowercase letters.
Note B- Make sure you have lotr.str extracted from English.BIG located in your lang folder..
Ok, Open up your new ini and and past this at the top and fill in where it says your YourHero:
Code |
;------------------------------------------------------------------------------
;
; YourHero.ini
;
;------------------------------------------------------------------------------
; YourHero
Object YourHero
; *** ART Parameters ***
; SelectPortrait for Heros is portrait behind skill buttons. HP = HeroPortrait.
SelectPortrait = HPBorimir <----Can Be Changed
; ButtonImage for Heros is button image on Hero Select UI to select hero. HI = HeroIcon or HeroImage.
ButtonImage = HIBorimir <----Can Be Changed
Draw = W3DScriptedModelDraw ModuleTag_DRAW
StaticModelLODMode = yes ; Will append M or L to the skin name depending on GameLOD
OkToChangeModelColor = Yes
|
Once you have filled it in you have 2 choices.
Choice 1- Get a skin already in game and rename it and new powers or
Choice 2- Get a New Skin from your artwork and get a skl already in game and new powers and name.
Choice 1 is the easiest to do in my opinion so ill explain that one.
Lets say i want my new rider hero to look and attack like Aragorn then I would copy this from Aragorn.ini and paste it in my NewHero.ini:
Code |
DefaultModelConditionState
Model = GUAragorn_SKN
End
ModelConditionState = WEAPONSET_HERO_MODE USER_3
ParticleSysBone = BAT_RIBS BladeMaster FollowBone:Yes
ParticleSysBone = BAT_HEAD AragornElendill FollowBone:Yes
End
ModelConditionState = WEAPONSET_HERO_MODE
ParticleSysBone = BAT_RIBS BladeMaster FollowBone:Yes
End
ModelConditionState = USER_3
ParticleSysBone = BAT_HEAD AragornElendill FollowBone:Yes
End
TransitionState = TRANS_boredToAttention_Elendil
Animation = GUAragorn_ATND
AnimationName = GUAragorn_SKL.GUAragorn_ATND
AnimationMode = ONCE
End
FXEvent = Name: FX_ElendilGlowEvent
End
TransitionState = TRANS_attentionToBored_Elendil
Animation = GUAragorn_ATND
AnimationName = GUAragorn_SKL.GUAragorn_ATND
AnimationMode = ONCE_BACKWARDS
End
FXEvent = Name: FX_ElendilGlowEvent
Flags = START_FRAME_LAST
End
TransitionState = TRANS_boredToAttention
Animation = GUAragorn_ATND
AnimationName = GUAragorn_SKL.GUAragorn_ATND
AnimationMode = ONCE
End
End
TransitionState = TRANS_attentionToBored
Animation = GUAragorn_ATND
AnimationName = GUAragorn_SKL.GUAragorn_ATND
AnimationMode = ONCE_BACKWARDS
End
Flags = START_FRAME_LAST
End
; --- Idle Anims
IdleAnimationState
StateName = STATE_bored
Animation = GUAragorn_IDLE ;no_fidget
AnimationName = GUAragorn_SKL.GUAragorn_IDLE
AnimationMode = ONCE
AnimationPriority = 12
End
Animation = GUAragorn_IDLF ;fidget
AnimationName = GUAragorn_SKL.GUAragorn_IDLF
AnimationMode = ONCE
AnimationPriority = 1
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_attention" or
Prev == "STATE_running" or
Prev == "OATH_BREAKERS" then CurDrawableSetTransitionAnimState("TRANS_attentionToBored") end
EndScript
End
AnimationState = THROWN_PROJECTILE
Animation = FLYA
AnimationName = GUAragorn_SKL.GUAragorn_FLYA
AnimationMode = LOOP
End
End
AnimationState = STUNNED_FLAILING
Animation = FLYA
AnimationName = GUAragorn_SKL.GUAragorn_FLYA
AnimationMode = LOOP
AnimationSpeedFactorRange = 0.4 0.6
End
End
AnimationState = DYING SPLATTED
Animation = Splatted_On_Ground
AnimationName = GUAragorn_SKL.GUAragorn_LNDA
AnimationMode = ONCE
End
EnteringStateFX = FX_SoldierHitGround
End
; --- Dying anims
AnimationState = DYING
Animation = GUAragorn_DIEA
AnimationName = GUAragorn_SKL.GUAragorn_DIEA
AnimationMode = ONCE
End
Animation = GUAragorn_DIEB
AnimationName = GUAragorn_SKL.GUAragorn_DIEB
AnimationMode = ONCE
End
End
AnimationState = PARALYZED
Animation
AnimationName = GUAragorn_IDLE
AnimationMode = LOOP
End
End
AnimationState = STUNNED_STANDING_UP
Animation = GUAragorn_GTPB
AnimationName = GUAragorn_SKL.GUAragorn_GTPB
AnimationMode = ONCE
AnimationSpeedFactorRange = 1.5 1.5
End
End
AnimationState = STUNNED
Animation = LNDA
AnimationName = GUAragorn_SKL.GUAragorn_LNDA
AnimationMode = ONCE
End
EnteringStateFX = FX_SoldierHitGround
End
; --- Attacking Anims [Weapon_A]
AnimationState = MOVING FIRING_OR_PREATTACK_A
ShareAnimation = Yes
Animation = RunAndFire
AnimationName = GUAragorn_SKL.GUAragorn_ATRA
AnimationMode = LOOP
End
Flags = RANDOMSTART
End
AnimationState = FIRING_OR_PREATTACK_A WEAPONSET_HERO_MODE ; Blademaster Mode
StateName = STATE_ready
Animation = ATKF
AnimationName = GUAragorn_SKL.GUAragorn_ATKF
AnimationMode = ONCE
UseWeaponTiming = Yes
End
Flags = RESTART_ANIM_WHEN_COMPLETE
FXEvent = Frame:25 Name: FX_BladeMasterHitOrient
FXEvent = Frame:45 Name: FX_BladeMasterHitOrient
End
AnimationState = FIRING_OR_PREATTACK_A
StateName = STATE_ready
Animation = ATKD
AnimationName = GUAragorn_SKL.GUAragorn_ATKD
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationPriority = 3
End
Animation = ATKE
AnimationName = GUAragorn_SKL.GUAragorn_ATKE
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationPriority = 2
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
; --- Moving Anims
AnimationState = MOVING
StateName = STATE_running
Animation = GUAragorn_RUNB
AnimationName = GUAragorn_SKL.GUAragorn_RUNB
AnimationMode = LOOP
End
End
AnimationState = LEVELED ; This state clears itself in 3 seconds
Animation = LevelUp
AnimationName = GUAragorn_SKL.GUAragorn_ATKO
AnimationMode = ONCE
End
End
AnimationState = SPECIAL_POWER_1 ; Aragorn shouting Elendil anim
StateName = STATE_ready
Animation = GUAragorn_ATKL
AnimationName = GUAragorn_SKL.GUAragorn_ATKL
AnimationMode = ONCE
End
ParticleSysBone = B_SWORDBONE ElendilFlare FollowBone:yes
ParticleSysBone = B_SWORDBONE ElendilSwordFlare FollowBone:yes
; FXEvent = Name: FX_ElendilGlowEvent
End
AnimationState = USER_2
StateName = ATHELAS
Animation = ATKP
AnimationName = GUAragorn_SKL.GUAragorn_ATKP
AnimationMode = ONCE
End
End
AnimationState = USER_1
StateName = OATH_BREAKERS
Animation = ATKN
AnimationName = GUAragorn_SKL.GUAragorn_CHRB
AnimationMode = ONCE
End
End
; --------- Click and Hit Reactions ------------
AnimationState = HIT_REACTION HIT_LEVEL_3
StateName = STATE_bored
Animation = Hit_Level_1_b
AnimationName = GUAragorn_SKL.GUAragorn_HITB
AnimationMode = ONCE
End
End
;----Emotion Animations
AnimationState = EMOTION_CELEBRATING
StateName = STATE_ready
Animation = CHRB
AnimationName = GUAragorn_SKL.GUAragorn_CHRB
AnimationMode = ONCE
AnimationPriority = 1
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
AnimationState = EMOTION_TAUNTING
StateName = STATE_ready
Animation = CHRB
AnimationName = GUAragorn_SKL.GUAragorn_CHRB
AnimationMode = ONCE
AnimationPriority = 1
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
AnimationState = EMOTION_ALERT
StateName = STATE_ready
Animation = IDLA
AnimationName = GUAragorn_SKL.GUAragorn_IDLA
AnimationMode = ONCE
AnimationPriority = 1
End
End
AnimationState = EMOTION_MORALE_HIGH
StateName = STATE_ready
Animation = ATKN
AnimationName = GUAragorn_SKL.GUAragorn_ATKN
AnimationMode = ONCE
AnimationPriority = 1
End
Animation = ATKP
AnimationName = GUAragorn_SKL.GUAragorn_ATKP
AnimationMode = ONCE
AnimationPriority = 15
End
Animation = TNTC
AnimationName = GUAragorn_SKL.GUAragorn_TNTD
AnimationMode = ONCE
AnimationPriority = 30
End
Animation = TNTD
AnimationName = GUAragorn_SKL.GUAragorn_TNTD
AnimationMode = ONCE
AnimationPriority = 30
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
AnimationState = ENGAGED
StateName = STATE_ready
Animation = IDLA
AnimationName = GUAragorn_SKL.GUAragorn_IDLA
AnimationMode = ONCE
UseWeaponTiming = Yes
AnimationPriority = 1
End
Flags = RESTART_ANIM_WHEN_COMPLETE
End
AnimationState = RAISING_FLAG
StateName = STATE_ready
Animation = CHRB
AnimationName = GUAragorn_SKL.GUAragorn_CHRB
AnimationMode = LOOP
End
End
AnimationState = SELECTED
StateName = STATE_attention
Animation = ATNE
AnimationName = GUAragorn_SKL.GUAragorn_ATNE
AnimationMode = LOOP
AnimationBlendTime = 5
AnimationMustCompleteBlend = yes
End
BeginScript
Prev = CurDrawablePrevAnimationState()
if Prev == "STATE_bored" then CurDrawableSetTransitionAnimState("TRANS_boredToAttention") end
EndScript
End
End |
Ok, Once this is in your new ini you now need the design parameters. what faction is your hero for Mordor,Isengard,Men,elves,Goblins,Dwarves? once you now go to one of there hero.ini and copy and paste there design parameters after what you did above. Lets say i want my new hero too be for Elves and i want its voice to be elronds then I would go to Elrond.ini and copy the design parameters and paste them in my newhero.ini.
Elronds Design Parameters & Others:
Code |
; ***DESIGN parameters ***
Side = Elves
EditorSorting = UNIT
ThreatLevel = ELROND_THREAT
ThingClass = CHARACTER_UNIT
BuildCost = 2000
BuildTime = 30
TransportSlotCount = TRANSPORTSLOTCOUNT_HERO
WeaponSet
Conditions = None
Weapon = PRIMARY NewHeroSword
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
End
ArmorSet
Conditions = None
Armor = ToughHeroArmor ; ;HeroArmor
DamageFX = NormalDamageFX
End
VisionRange = VISION_HERO_STANDARD
ShroudClearingRange = SHROUD_CLEAR_HERO
MaxVisionBonusPercent = 300%
VisionBonusTestRadius = 200
VisionBonusPercentPerFoot = 1.0%
BountyValue = ELVEN_ELROND_BOUNTY_VALUE
RecruitText = CONTROLBAR:NewHeroRecruit
ReviveText = CONTROLBAR:NewHeroRevive
Hotkey = CONTROLBAR:NewHeroHotkey
DisplayName = OBJECT:NewHero
CrushableLevel = 2 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = NewHeroCommandSet
CommandPoints = 100
; *** AUTO RESOLVE DATA ***
AutoResolveUnitType = AutoResolveUnit_Hero
AutoResolveCombatChain = AutoResolve_HeroCombatChain
AutoResolveBody = AutoResolve_ElrondBody
AutoResolveArmor
Armor = AutoResolve_ElrondArmor
End
AutoResolveWeapon
Weapon = AutoResolve_ElrondWeapon
End
AutoResolveLeadership = AutoResolve_ElrondBonus
; *** AUDIO Parameters ***;
VoiceAttack = ElrondVoiceAttack
VoiceAttackCharge = ElrondVoiceAttackCharge
VoiceAttackMachine = ElrondVoiceAttack
VoiceAttackStructure = ElrondVoiceAttackBuilding
VoiceFear = ElrondVoiceHelpMe
VoiceGuard = ElrondVoiceMove
VoiceMove = ElrondVoiceMove
VoiceMoveToCamp = ElrondVoiceMoveCamp
VoiceMoveWhileAttacking = ElrondVoiceDisengage
VoicePriority = 78
VoiceRetreatToCastle = ElrondVoiceRetreat
VoiceSelect = ElrondVoiceSelectMS
VoiceSelectBattle = ElrondVoiceSelectBattle
SoundImpact = ImpactHorse
UnitSpecificSounds
VoiceEnterUnitElvenTransportShip = ElrondVoiceMoveShip
VoiceGarrison = ElrondVoiceMoveGarrison
VoiceInitiateCaptureBuilding = ElrondVoiceCaptureBuilding ; From SpecialPower SpecialAbilityCaptureBuilding
End
CrowdResponseKey = ElfHero
#include "..\..\..\includes\StandardUnitEvaEvents.inc"
EvaEventDieOwner = ElrondDie ;Eva event to trigger on unit's death. NOTICE THAT this is only for permanent deaths
; Tie into LargeGroupAudio system
Behavior = LargeGroupAudioUpdate ModuleTag_LGAU
Key = Humanoid_Male Elf_Male Unit Infantry Hero ;Human
;UnitWeight = 2
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_CAST_REFLECTIONS INFANTRY PATH_THROUGH_EACH_OTHER SCORE ARMY_SUMMARY HERO HEAVY_MELEE_HITTER
PathfindDiameter = 40.0
CamouflageDetectionMultiplier = CAMOUFLAGE_DETECTION_DISTANCE_MEDIUM
BuildCost = ELROND_BUILDCOST
BuildTime = ELROND_BUILDTIME
ShockwaveResistance = SHOCKWAVE_RESISTANCE_STRONG
;//DisplayMeleeDamage = ELROND_DAMAGE
Body = RespawnBody ModuleTag_RespawnBody
CheerRadius = EMOTION_CHEER_RADIUS
MaxHealth = ELROND_HEALTH ; balance
PermanentlyKilledByFilter = NONE
DodgePercent = HERO_DODGE_PERCENT
End
Behavior = RespawnUpdate ModuleTag_RespawnUpdate
DeathAnim = DYING
DeathFX = FX_ElrondDieToRespawn
DeathAnimationTime = 4000
InitialSpawnFX = FX_ElrondInitialSpawn
RespawnAnim = LEVELED
RespawnFX = FX_ElrondRespawn
RespawnAnimationTime = 2000
AutoRespawnAtObjectFilter = NONE +CASTLE_KEEP
ButtonImage = HIElrond_res
;RespawnEntries determine the ruleset for how a character can be revived. Some units may automatically respawn, others
;may require a specific revive action performed on him. You can specify different values for each level... or use Level:Any
RespawnRules = AutoSpawn:No Cost:1500 Time:60000 Health:100% ;DEFAULT VALUES
RespawnEntry = Level:2 Cost:1500 Time:60000 ; ;50% cost, 1x buildtime ;For other levels, only override what is different.
RespawnEntry = Level:3 Cost:1500 Time:60000
RespawnEntry = Level:4 Cost:1500 Time:60000
RespawnEntry = Level:5 Cost:1950 Time:120000 ; ;65% cost, 2x buildtime
RespawnEntry = Level:6 Cost:1950 Time:120000
RespawnEntry = Level:7 Cost:1950 Time:120000
RespawnEntry = Level:8 Cost:2400 Time:180000 ; ;80% cost, 3x buildtime
RespawnEntry = Level:9 Cost:2400 Time:180000
RespawnEntry = Level:10 Cost:2400 Time:180000
End
#include "..\..\..\includes\DefaultInvisibilityUpdate.inc"
Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = Hero
End
|
Notice there are also the Audio parameters and Engineering parameters and there is the Auto Resolve data. all of this sticks together. Fill in the spots where it says NewHero. The BuildCost and BuildTime can be changed and so can the CommandPoints.
Once you fill this out find a power you want in another heroes ini and paste it under all the new stuff you put in your ini. For Me I am going to put in BladeMaster. So i find blademaster in aragorn.ini looks like this:
Code |
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_AragornBladeMasterEnabler
SpecialPowerTemplate = SpecialAbilityAragornBladeMaster
TriggeredBy = Upgrade_AragornBladeMaster
End
Behavior = SpecialPowerModule ModuleTag_AragornBladeMasterStarter ; SpecialAbility is a SpecialPower, SpecialPower is anyting special
SpecialPowerTemplate = SpecialAbilityAragornBladeMaster
StartsPaused = Yes
End
Behavior = HeroModeSpecialAbilityUpdate ModuleTag_AragornBladeMasterUpdate ; So the difference in SpecialAbility is that it takes timing from this Update, instead of simply firing.
SpecialPowerTemplate = SpecialAbilityAragornBladeMaster
HeroAttributeModifier = AragornBladeMaster
HeroEffectDuration = 30000 ; this should sync with the auto ability delay re-fire time in commandButtons.ini
UnpackTime = 1 ; insant unpack
TriggerSound = AragornBladeMaster
End
|
Now Go to the top of your new ini and under:
Code |
DefaultModelConditionState
Model = GUAragorn_SKN
End
|
Put:
Code |
ModelConditionState = WEAPONSET_HERO_MODE
ParticleSysBone = BAT_RIBS BladeMaster FollowBone:Yes
End
|
Then go to WeaponSet and copy and paste the old weaponset and instead of Conditions being None make it WEAPONSET_HERO_MODE and make the weapon YourHeroSwordSuper.
WeaponSet Should look like this:
Code |
WeaponSet
Conditions = WEAPONSET_HERO_MODE
Weapon = PRIMARY YourHeroSwordSuper
End
|
Fill in where it says NewHero
Thats all for the power.
Now add this at the very end:
Code |
Geometry = CYLINDER
GeometryMajorRadius = 8.0
GeometryMinorRadius = 8.0
GeometryHeight = 19.2
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 20;
ShadowSizeY = 20;
ShadowTexture = ShadowI;
End
|
Thats all for Your Hero.ini now go to weapon.ini and look up Aragorn
and find his Sword Weapon. Once Found Copy and past it and rename it NewHeroSword
copy and paste it again and name it NewHeroSwordSuper
All Together should look like this:
Code |
;------------------------------------------------------------------------------
Weapon NewHeroSword
LeechRangeWeapon = Yes
AttackRange = STANDARD_MELEE_ATTACK_RANGE
MeleeWeapon = Yes
DelayBetweenShots = ARAGORN_DELAYBETWEENSHOTS ; time between shots, msec
PreAttackDelay = ARAGORN_PREATTACKDELAY ; 400 is sword swing delay time before contact with target.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FireFX = FX_GondorSwordHit
;FireFX = FX_IsildurSword
FiringDuration = ARAGORN_FIRINGDURATION ; Duration of the sword swing
RadiusDamageAffects = ENEMIES NEUTRALS ; ;
DamageNugget ; A basic Nugget that just does damage
Damage = ARAGORN_DAMAGE
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 2.0 ; ;
Radius = 0.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
End
; ;
DamageNugget ; A basic Nugget that just does damage
Damage = #MULTIPLY( ARAGORN_DAMAGE .25 )
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 10.0 ; ;
Radius = 0.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
End
End
|
Code |
;------------------------------------------------------------------------------
Weapon NewHeroSwordSuper
LeechRangeWeapon = Yes
AttackRange = STANDARD_MELEE_ATTACK_RANGE
MeleeWeapon = Yes
DelayBetweenShots = ARAGORN_DELAYBETWEENSHOTS ; time between shots, msec
PreAttackDelay = ARAGORN_PREATTACKDELAY ; 400 is sword swing delay time before contact with target.
PreAttackType = PER_SHOT ; Do the delay each time we attack a new target
FireFX = FX_GondorSwordHit
;FireFX = FX_IsildurSword
FiringDuration = ARAGORN_FIRINGDURATION ; Duration of the sword swing
RadiusDamageAffects = ENEMIES NEUTRALS ; ;
DamageNugget ; A basic Nugget that just does damage
Damage = ARAGORN_DAMAGE
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 2.0 ; ;
Radius = 0.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
End
; ;
DamageNugget ; A basic Nugget that just does damage
Damage = #MULTIPLY( ARAGORN_DAMAGE .25 )
DamageScalar = 50000% NONE +RohanOathbreaker
Radius = 10.0 ; ;
Radius = 0.0
DelayTime = 0
DamageType = HERO
DamageFXType = SWORD_SLASH
DeathType = NORMAL
End
End
|
Now on NewHeroSwordSuper Make the Damage = 500
fill in where it says NewHero
Now save and exit weapon.ini
Now open up your lotr.str and copy and paste and then fill in where it says NewHero.
Fill In:
Code |
OBJECT:NewHero
"NewHero"
END
CONTROLBAR:NewHeroRecruit
"Recruit NewHero To Fight For Middle-Earth"
END
CONTROLBAR:NewHeroRevive
"Revive NewHero"
END
CONTROLBAR:NewHeroHotKey
"&NewHero"
END
|
Now Go to experience levels and find aragorn experience levels and where it says Target names after GondorAragorn put Your Heros name after all the target names. then go to commandset.ini and find aragorncommandset and copy and paste it and take out all the other commands so it looks like this:
Code |
CommandSet NewHeroCommandSet
1 = Command_ToggleStance
2 = Command_SpecialAbilityBladeMaster
12 = Command_CaptureBuilding
13 = Command_AttackMove
14 = Command_Stop
End
|
Fill in NewHero.
Now go PlayerTemplate.ini and find your heroes faction and and find BuildableHeroesMP and at the end put your heroes name. Shoud then look like this (Mine is for Elves so i put it at the end of the Elvens BuildableHeroesMP.)
Code |
BuildableHeroesMP = CreateAHero ElvenArwen ElvenHaldir ElvenGlorfindel ElvenLegolas ElvenThranduil ElvenElrond NewHero
|
Now Go To Game And Check out your hero!