Gandalf Bubble shield
#1
Posted 26 January 2007 - 01:15 AM
#2
Posted 26 January 2007 - 08:21 AM
But what the heck..
the first time I'm able to help . I'm not gonna let this one pass up (c;
-------------------------
Now to your question
depends
Do you want it to be a power he has to activate via button?
I'll try to cover both.. so don't be confused (c;
I can give you some codesnippets since I added it to the CaH Skills..
they shoudl give you enough to get going
I've never added a power to "normal" heroes though .. so i might miss something .. but don't you worry there are plenty of tutorials here
files that may be edited are are:
-in ini.big
commandbutton.ini , commandset.ini, attributemodifier.ini, experiencelevels.ini, specialpowers.ini, gandalf.ini
-in data1.big
scriptevents.xml, scripts.lua
-in english.big (if you use a translated version of bfmeII rotwk, it may be named differnet)
lotr.str
Now to begin
for the button
in commandbutton.ini
CodeBox #1
CommandButton Command_Shieldbubble Command = SPECIAL_POWER SpecialPower = SpecialPowerShieldBubble TextLabel = CONTROLBAR:SpecialAbility_ShieldBubble ButtonImage = Gandolf_sphere ButtonBorderType = ACTION DescriptLabel = CONTROLBAR:ToolTipSpecialAbility_Shieldbubble InPalantir = Yes AutoAbility = Yes End
You'll have to add the descriptions etc in lotr.str of course
CodeBox #2
CONTROLBAR:ToolTipSpecialAbility_ShieldBubble "The Wizard transfers all of his Power into a Shield that offers increased defense \n Left click icon to activate" END CONTROLBAR:SpecialAbility_ShieldBubble "Shield&bubble" END
it already is defined in specialpowers.ini
CodeBox #3
;------------------------------------------------------------------------------ SpecialPower SpecialPowerShieldBubble Enum = SPECIAL_SHIELD_BUBBLE ReloadTime = 30000 End
Also gandalf will need to know what to do.. so we'll have to edit gandalf.ini
part of the power is already there, just do a quick search for shieldbubble and restore it to its former glory like so
CodeBox #4
Draw = W3DScriptedModelDraw ModuleTag_ShieldBubble DefaultModelConditionState Model = None End ModelConditionState = USER_3; HERO -- not using HERO anymore since HERO is used for Gandalf White Model = GUGANDALFCRSTL ParticleSysBone = ROOTTRANSFORM GandalfCrystalSphere FollowBone:Yes ParticleSysBone = ROOTTRANSFORM GandalfBeamGlow2 FollowBone:Yes End End
Now to define the power.. also in gandalf.ini
first I'll show you the Power you have to activate .. and afterwards the autocast thingy
If you want to make the effect longer, just change setmodelconditiontime here
(and .. i'm not sure on that one .. the bonus duration in attributemodiefier.ini)
CodeBox #5
;------- ShieldBubble -------------------------------------------------------------------------------- Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ShieldBubbleEnabler SpecialPowerTemplate = SpecialPowerShieldBubble TriggeredBy = Upgrade_ShieldBubble End Behavior = SpecialPowerModule ModuleTag_ShieldBubbleStarter SpecialPowerTemplate = SpecialPowerShieldBubble StartsPaused = Yes UpdateModuleStartsAttack = Yes AttributeModifier = GandalfShieldBubbleBonus AttributeModifierAffectsSelf = Yes SetModelCondition = ModelConditionState:USER_3 SetModelConditionTime = 2.5; in seconds End Behavior = SpecialAbilityUpdate ModuleTag_ShieldBubbleUpdate SpecialPowerTemplate = SpecialPowerShieldBubble UnpackTime = 1 PreparationTime = 1 End
To make it autocast use this code instead
CodeBox #6
;------- ShieldBubble -------------------------------------------------------------------------------- Behavior = AutoAbilityBehavior ModuleTag_ShieldBubbleAutoAbilityBehavior End Behavior = SpecialPowerModule ModuleTag_ShieldBubbleStarter ;StartsActive = No SpecialPowerTemplate = SpecialPowerShieldBubble UpdateModuleStartsAttack = No StartsPaused = No AttributeModifier = GandalfShieldBubbleBonus AttributeModifierAffectsSelf = Yes SetModelCondition = ModelConditionState:USER_3 SetModelConditionTime = 2.5; in seconds End
The GandalfShieldBubbleBonus should already be defined in attributemodifier.ini .. If not, here's the code
CodeBox #7
ModifierList GandalfShieldBubbleBonus Category = SPELL Modifier = ARMOR 200% // Additive, Sum of these are subtracted from all entries in Armor.ini Modifier = RESIST_KNOCKBACK 100% // Additive. Sum of these is a saving throw against knockback Duration = 2500 // Time with special effect of bubble End
.. noow The next two are only relevant if you want it to appear in gandalfs commandset (palantir)
If you want to click on hit, you'll have to put in in gandalfs commandset in commandset.ini
search for gondorgandalf
CodeBox #8
CommandSet GondorGandalfCommandSet 1 = Command_ToggleStance 2 = Command_SpecialAbilityWizardBlast 3 = Command_GondorGandalfLightningSword 4 = Command_GandalfShadowfax 5 = Command_GondorGandalfIstariLight 6 = Command_SpecialAbilityWordOfPower 12 = Command_CaptureBuilding 13 = Command_AttackMove 14 = Command_Stop 16 = Command_SetStanceBattle 17 = Command_SetStanceAggressive 18 = Command_SetStanceHoldGround End
since his Commandset is already full, you'll have to replace one of his powers (numbers 2-6)
with "Command_ShieldBubble"
You can also replace the togglestance button with it .. but i believe you'll only be able to toggle stances via keyboardshortcuts if you do that.
last but not least, you have to define, when the power becomes available
do so in experiencelevels.ini
search for GandalfLevel1 to quickly find the humble beginnings of gandalf
and now add the "Upgrade_ShieldBubble" to the level you want it to become available in
for level 2 you'd change the GandalfLeve2 like this:
CodeBox #9
ExperienceLevel GandalfLevel2 TargetNames = GANDALF RequiredExperience = GANDALF_LVL2_EXP_NEEDED ExperienceAward = GANDALF_LVL2_EXP_AWARD AttributeModifiers = HeroLevelUpDamage1 Rank = 2 LevelUpFx = FX:GandalfLevelUp1FX ;LevelUpOCL = OCL_GandalfLevelUp1OCL Upgrades = Upgrade_GandalfLightningSword Upgrade_ShieldBubble SelectionDecal Texture = decal_hero_good Style = SHADOW_ALPHA_DECAL OpacityMin = 50% OpacityMax = 100% MinRadius = 40 MaxRadius = 200 MaxSelectedUnits = 40 End END
Now how about some scripts?
If he should use it all by himself as soon as a big hit is incoming and he still has time
Script's can be found in data.1.big
in scriptevents.xml search for "GandalfFunctions" and restore the commented out defensive function like this
CodeBox #10
<EventList Name="GandalfFunctions" Inherit="BaseScriptFunctions"> <EventHandler EventName="DamageIncoming" ScriptFunctionName="GandalfConsiderUsingDefensePower" DebugSingleStep="false"/> <EventHandler EventName="UsingSpecialOne" ScriptFunctionName="GandalfTriggerWizardBlast" DebugSingleStep="false"/> </EventList>
also restore the GandalfConsiderUsingDefensePower function in scripts.lua
CodeBox #11
function GandalfConsiderUsingDefensePower(self, other, delay, amount) -- Put up the shield if a big attack is coming and we have time to block it if tonumber(delay) > 1 then if tonumber(amount) >= 100 then ObjectDoSpecialPower(self, "SpecialPowerShieldBubble") return end end end
I never saw the skill used .. even with this function, so you might try to play with the damage amount a bit.. or add another function, that fires as soon as he gets under fire
scriptevents.xml (put it in gandalffunctions)
CodeBox #12
<EventHandler EventName="OnDamaged" ScriptFunctionName="GandalfUseDefensePower" DebugSingleStep="false"/>
scripts.lua
CodeBox #13
function GandalfUseDefensePower(self, other, delay, amount) ObjectDoSpecialPower(self, "SpecialPowerShieldBubble") end
hope to have been of help,
Imladhrim
Edited by Imladhrim, 26 January 2007 - 05:57 PM.
#3
Posted 26 January 2007 - 01:01 PM
#4
Posted 26 January 2007 - 01:48 PM
AND want it to autocast once a certain event takes place (like GandalfHealth<=1000)
AND if you want this skill to be at Gandalfs disposal at all times
you don't have to edit command.ini
you don't have to edit commandset.ini
you don't have to edit experiencelevels.ini
now what you will have to do is:
edit gandalf.ini and
remove all ";" in front of the shieldbubble paragraph already there
I already wrote the code how it should be after you removed the ";" in my earlier post (Codebox #4)
you have to add the autocast code, also to be found in my earlier post (CodeBox #6)
If you want the shield to be there for a longer duration, you have to increase the timing of the
"SetModelConditionTime = 2.5; in seconds" Parameter. Just replace the 2.5 with how long you want the shield to be up (in seconds)
If you want it do be there longer, you will also have to increase the duration of the "GandalfshielbbubbleBonus" in attributemodifier.ini (in milliseconds) (see Codebox #7)
Now In order to get the ability to fire, you will need a script
I gave two examples in my earlier post. (Codebox #10 -#13)
I don't know how to script, that Gandalf casts the Shieldbubble once he reaches 1000 Hitpoints..
maybe somebody else does
Another way would be to add an Autobehavior to gandalfs code (in gandalf.ini)
Behavior = AISpecialPowerUpdate ShieldBubbleAI CommandButtonName = Command_Shieldbubble SpecialPowerAIType = AI_SPECIAL_POWER_BASIC_SELF_BUFF End
But if you want that, you will have to add the ShieldBubble Button in commandbutton.ini
see my earlier post how to do that (CodeBox #1)
and you will have to add the Button to Gandalfs Commandset in a way that he does not replace another power.
Here is the code that would achieve that
in commandset.ini
CommandSet GondorGandalfCommandSet 1 = Command_ToggleStance 2 = Command_SpecialAbilityWizardBlast 3 = Command_GondorGandalfLightningSword 4 = Command_GandalfShadowfax 5 = Command_GondorGandalfIstariLight 6 = Command_SpecialAbilityWordOfPower 7 = Command_Shieldbubble 12 = Command_CaptureBuilding 13 = Command_AttackMove 14 = Command_Stop 16 = Command_SetStanceBattle 17 = Command_SetStanceAggressive 18 = Command_SetStanceHoldGround End
this way it will be in his commandset, but it will come After his word of power skill, so you won't see the button ingame. It will still be available from the beginning.
If you do the last two steps, I believe you will also be able to cast the spell yourself using a keyboard shortcut
defined in lotr.str in my example (codebox #2) it would be "b" (as long as the key isn't taken .. if it is, just add the "&" in front of a different letter.
Hope to have been of Help,
Imladhrim
Edited by Imladhrim, 26 January 2007 - 02:12 PM.
#5
Posted 26 January 2007 - 01:50 PM
#6
Posted 26 January 2007 - 03:44 PM
#7
Posted 26 January 2007 - 05:54 PM
Just post the changes you've made and I'll have a look.
a quick checklist
Did you add the command button?
Did you reactivate the Shielbubble Modelconditionchange in gandalf.ini?
Did you add the autocast code to gandalf.ini?
Did you add the AI Behaveiour to gandalf.ini?
Did you add the two functions to Gandalfsfunctions in scriptevents.xml an scripts.lua?
Did you add the text lines to lotr.str?
To test the power you might switch it's place in the commandset with wizardblast
that way you could check if the command is there, if it is unpaused, if you can cast it via mouseclick or shortcut
etc
..
maybe it's just a typo
Edited by Imladhrim, 26 January 2007 - 06:02 PM.
#8
Posted 26 January 2007 - 06:43 PM
#9
Posted 26 January 2007 - 07:09 PM
#10
Posted 26 January 2007 - 07:19 PM
Glad to hear everything worked out alright.
#11
Posted 03 July 2011 - 01:17 AM
The weapon fires only once, and no matter what time I give it to it, the Shield Bubble lasts only the default time <2500ms>.
Here are the inis. If any other are needed, please tell me and I'll post them.
Weapon
;------------------------------------------------------------------------------- Weapon ShieldBubbleWeapon ; Shot out every DelayBetweenShots RadiusDamageAffects = ENEMIES NOT_SIMILAR LeechRangeWeapon = Yes AttackRange = 50.0 MeleeWeapon = No DelayBetweenShots = 0 ; time between shots, msec PreAttackDelay = 0 ;PreAttackDelay+FiringDuration = UseWeaponTiming = Yes duration PreAttackType = PER_SHOT FiringDuration = 0 DamageNugget ; A basic Nugget that just does damage Damage = 1 ; A whole lot of damage. DamageScalar = 0% NONE +STRUCTURE Radius = 50 DelayTime = 0 DamageType = MAGIC DeathType = CRUSHED End MetaImpactNugget ; A Nugget that throws things back with force ; HeroResist = .75 ShockWaveAmount = 35 ShockWaveRadius = 35 ShockWaveArc = 180 ; Should generally be equal to damage arc ShockWaveTaperOff = 1.0 ShockWaveSpeed = 0.0 ShockWaveZMult = 1.0 End End
Gandalf
;------- ShieldBubble -------------------------------------------------------------------------------- Behavior = UnpauseSpecialPowerUpgrade ModuleTag_ShieldBubbleEnabler SpecialPowerTemplate = SpecialPowerShieldBubble TriggeredBy = Upgrade_ShieldBubble End Behavior = SpecialPowerModule ModuleTag_ShieldBubbleStarter SpecialPowerTemplate = SpecialPowerShieldBubble StartsPaused = Yes UpdateModuleStartsAttack = Yes AttributeModifier = GandalfShieldBubbleBonus AttributeModifierAffectsSelf = Yes SetModelCondition = ModelConditionState:USER_3 SetModelConditionTime = 2.5; in seconds End Behavior = WeaponFireSpecialAbilityUpdate ModuleTag_ShieldBubbleUpdate SpecialPowerTemplate = SpecialPowerShieldBubble UnpackTime = 1 PreparationTime = 1 SpecialWeapon = ShieldBubbleWeapon End
Changed nothing else.
Thanks in advance.
PD: I know this thread is 3 years old but I thought a bump would be better than a new thread and people replying USE SEARCH.
Edited by Kazy, 05 July 2011 - 01:52 AM.
#12
Posted 05 July 2011 - 01:12 AM
Try giving gandalf a power simliar to the Balrog's Ignite
Set the Condtions : HERO_MODE etc so the visual effects are right
make a weapon similiar ti the balrog's except with a continuous knockback
#13
Posted 05 July 2011 - 02:12 AM
I'm a bit rusty ...
Try giving gandalf a power simliar to the Balrog's Ignite
Set the Condtions : HERO_MODE etc so the visual effects are right
make a weapon similiar ti the balrog's except with a continuous knockback
I have no idea how to do that. Don't even know what HERO_MODE is. I searched tutorials on what that is, or an Enum for that case. I'm pretty sure I have a somewhat accurate guess, but don't really know for certain.
I do know that HERO_MODE is used to make Gandalf white though. Dunno if that helps.
Edited by Kazy, 05 July 2011 - 02:13 AM.
#14
Posted 06 July 2011 - 02:42 AM
1. gives a flaming appearance
2. Does EXTRA damage around him
He does this by going into HERO_MODE when triggered which does the damage and changes his appearance
So you need to duplicate this effect / power for gandalf
Check the commandbutton for Ignite , the special power , the behaviour code in MordorBalrog.ini
and then the weapon that it fires and the new anim state the Balrog gets ....
Look over each bit of code and you will be able to duplicate the Power for Gandalf
#16
Posted 06 July 2011 - 04:29 PM
Bumping is fine, if the subject is still relevant.PD: I know this thread is 3 years old but I thought a bump would be better than a new thread and people replying USE SEARCH.
https://www.twitch.tv/vileartist - Yes shameless self-promotion
----------------------------------------------------------------------------------------------------------------------
"Old modders never die, they just fade away" ~ Hostile
#17
Posted 10 July 2011 - 02:22 AM
This is both Aragorn's and Balrog's code for heromode.
; Behavior = UnpauseSpecialPowerUpgrade ModuleTag_EnableElendil ; SpecialPowerTemplate = SpecialAbilityAragornElendil ; TriggeredBy = Upgrade_AragornElendil ; End ; ; Behavior = SpecialPowerModule ModuleTag_ElendilStarter ; SpecialPowerTemplate = SpecialAbilityAragornElendil ; UpdateModuleStartsAttack = Yes ; AntiCategory = LEADERSHIP ; AttributeModifier = AragornElendilAntiCategory ; Used for the anti category duration only. ; AttributeModifierRange = 200.0 ; StartsPaused = Yes ; obtained on level 2 ; SetModelCondition = ModelConditionState:USER_3 ; SetModelConditionTime = 10.0 ; 10 secs of glow anim for sword ; End ; ; Behavior = ModelConditionSpecialAbilityUpdate ModuleTag_ElendilUpdate ; SpecialPowerTemplate = SpecialAbilityAragornElendil ; UnpackTime = 1400 ; Drawing the horn ; PreparationTime = 1 ; nothing ; PersistentPrepTime = 1000 ; Blowing ; PackTime = 1000 ; Putting horn away ; ; GenerateTerror = Yes ; EmotionPulseRadius = 180 ; ObjectFilter = ELENDIL_OBJECT_FILTER ; AwardXPForTriggering = 0 ; End ; ; ; ; Behavior = SpecialPowerModule ModuleTag_IgniteStarter ; SpecialPowerTemplate = SpecialAbilityHeroMode ; UpdateModuleStartsAttack = Yes ; ;InitiateSound = ; End ; Behavior = HeroModeSpecialAbilityUpdate ModuleTag_IgniteUpdate ; SpecialPowerTemplate = SpecialAbilityHeroMode ; UnpackingVariation = 1 ; ; UnpackTime = 1800 ; PackTime = 1600 ; ; AwardXPForTriggering = 0 ; ; HeroAttributeModifier = BalrogIgniteState ; HeroEffectDuration = 30000 ; End ; ;
This is the one for Gandalf.
Behavior = ModelConditionSpecialAbilityUpdate ModuleTag_ShieldBubbleUpdate SpecialPowerTemplate = SpecialPowerShieldBubble UnpackTime = 1 PreparationTime = 1 SpecialWeapon = ShieldBubbleWeapon ; HeroAttributeModifier = GandalfShieldBubbleBonus HeroEffectDuration = 10000 End
With that code, I get an error saying that SpecialWeapon is an Unknown field.
If I use WeaponFireSpecialAbilityUpdate instead of ModelConditionSpecialAbilityUpdate it says that HeroEffectDuration is an Unknown field. And AFAIK, I can't use 2 updates. So. I'm lost. e.e
Also.
Changed the Weapon.
Weapon ShieldBubbleWeapon RadiusDamageAffects = ENEMIES NEUTRALS DamageFieldNugget ; A Nugget that lays down an area of damage that persists independantly WeaponTemplateName = ShieldBubbleWeapon2 Duration = 1500 End End
;------------------------------------------------------------------------------- Weapon ShieldBubbleWeapon2 ; Shot out every DelayBetweenShots RadiusDamageAffects = ENEMIES NOT_SIMILAR LeechRangeWeapon = Yes AttackRange = 50.0 MeleeWeapon = No PreAttackDelay = 0 ;PreAttackDelay+FiringDuration = UseWeaponTiming = Yes duration PreAttackType = PER_SHOT FiringDuration = 0 DelayBetweenShots = 0 ; time between shots, msec DamageNugget ; A basic Nugget that just does damage Damage = 1 ; A whole lot of damage. DamageScalar = 0% NONE +STRUCTURE Radius = 50 DelayTime = 0 DamageType = MAGIC DeathType = CRUSHED End MetaImpactNugget ; A Nugget that throws things back with force ; HeroResist = .75 ShockWaveAmount = 35 ShockWaveRadius = 35 ShockWaveArc = 180 ; Should generally be equal to damage arc ShockWaveTaperOff = 1.0 ShockWaveSpeed = 0.0 ShockWaveZMult = 1.0 End End
Here's the INI if you wanna take a look at it directly:
http://www.megaupload.com/?d=O3YBXIWO
Edited by Kazy, 10 July 2011 - 03:25 AM.
#18
Posted 18 July 2011 - 07:41 PM
I've added it as a sleectable power for wizard, and it works, but if i use HERO for the user, then HotW cah blademaster ability gets the shield graphic as well. If i use USER_3, then ELendil gets the shield graphic. It's driving me nuts!
Worse is, i absolutely cannot find the reason for Blade Master to get the effect. I see how Elendil does when i use USER_3, since in createaheropowers.inc, Elendil has this line:
SetModelCondition = ModelConditionState:USER_3
But Blade Master has no such line, so i cannot figure out why it triggers the shield graphic when i use HERO mode. It's driving me nuts!
Can i define new ModelConditions? Which file do i do that in (for CaH)?
#19
Posted 19 July 2011 - 04:04 PM
#20
Posted 19 July 2011 - 06:01 PM
Are these defined somewhere that i can change? Like add the missing animations to USER_4, or define new ones if they don't exist? Maybe i was really tired, but i couldn't find it. But then i'm also pretty newb.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users