Posted by: Gameanater - Tuesday, October 2, 2018 1:41:38 AM
[code=plain]
;Microwave Ranger weapons
;------------------------------------------------------------------------------
Weapon MicrowaveRangerVehicleDisabler
PrimaryDamage = 24.0
PrimaryDamageRadius = 0.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 120.0
DamageType = SUBDUAL_VEHICLE
DeathType = NORMAL
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
;WeaponSpeed = 10.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveDisableStream
LaserBoneName = MuzzleFX
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
FireSound = MicrowaveWeaponLoop
FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
End
;------------------------------------------------------------------------------
Weapon MicrowaveRangerBuildingDisabler
PrimaryDamage = 50.0
PrimaryDamageRadius = 0.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 120.0
DamageType = SUBDUAL_BUILDING
DeathType = NORMAL
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
;WeaponSpeed = 10.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveDisableStream
LaserBoneName = MuzzleFX
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
FireSound = MicrowaveWeaponLoop
FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
End
;------------------------------------------------------------------------------
;Instructions:
;Place human within range of the rifle and center of your cross-hairs
;Set weapon to "high" and pull trigger
;Continue until your human is a screaming, flaming husk and enjoy.
;Caution! Product will be hot!
Weapon MicrowaveRangerHumanReheater
PrimaryDamage = 20.0 ; Toasty
PrimaryDamageRadius = 2.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 120.0
DamageType = MICROWAVE ;We only wanna shoot humans with this weapon
DeathType = BURNED
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveDisableStream
LaserBoneName = MuzzleFX
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
FireSound = MicrowaveWeaponLoop
FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
End
And the unit itself
;------------------------------------------------------------------------------
;Microwave Ranger cyborg
Object SupW_AmericaInfantryRanger
; *** ART Parameters ***
SelectPortrait = SARanger_L
ButtonImage = SARanger
UpgradeCameo1 = Upgrade_AmericaRangerFlashBangGrenade
UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
UpgradeCameo3 = Upgrade_InfantryCaptureBuilding
UpgradeCameo4 = Upgrade_AmericaChemicalSuits
;UpgradeCameo5 = NONE
Draw = W3DModelDraw ModuleTag_01
OkToChangeModelColor = Yes
; this says "we don't use these condition states at all, so completely
; ignore them for purposes of matchmaking"... this is useful to help
; reduce the number of AliasConditionState clauses you must add in
; order to avoid ambiguity in some cases.
IgnoreConditionStates = PREATTACK_A FIRING_A BETWEEN_FIRING_SHOTS_A RELOADING_A
; --- Idle
DefaultConditionState
Model = AIRngr_SKN
IdleAnimation = AIRngr_SKL.AIRngr_STA 0 35
IdleAnimation = AIRngr_SKL.AIRngr_IDA
IdleAnimation = AIRngr_SKL.AIRngr_IDB
AnimationMode = ONCE
WeaponFireFXBone = PRIMARY Muzzle
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponLaunchBone = PRIMARY Muzzle
WeaponFireFXBone = SECONDARY Muzzle
WeaponMuzzleFlash = SECONDARY MuzzleFX
WeaponLaunchBone = SECONDARY Muzzle
WeaponFireFXBone = TERTIARY Muzzle
WeaponMuzzleFlash = TERTIARY MuzzleFX
WeaponLaunchBone = TERTIARY Muzzle
TransitionKey = TRANS_Stand
End
ConditionState = REALLYDAMAGED
IdleAnimation = AIRngr_SKL.AIRngr_STB 0 35
IdleAnimation = AIRngr_SKL.AIRngr_IDC
IdleAnimation = AIRngr_SKL.AIRngr_IDD
AnimationMode = ONCE
TransitionKey = TRANS_StandInjured
End
TransitionState = TRANS_Stand TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_SA2SB
AnimationMode = ONCE
End
; --- attacking (Machine Gun)
ConditionState = USING_WEAPON_A
Animation = AIRngr_SKL.AIRngr_ATA
AnimationMode = LOOP
TransitionKey = TRANS_FiringA
End
ConditionState = USING_WEAPON_A REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_ATA2
AnimationMode = LOOP
TransitionKey = TRANS_FiringAInjured
End
TransitionState = TRANS_FiringA TRANS_FiringAInjured
Animation = AIRngr_SKL.AIRngr_A2WAA
AnimationMode = ONCE
End
TransitionState = TRANS_Stand TRANS_FiringA
Animation = AIRngr_SKL.AIRngr_ATAST
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringA TRANS_Stand
Animation = AIRngr_SKL.AIRngr_ATAED
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_StandInjured TRANS_FiringAInjured
Animation = AIRngr_SKL.AIRngr_S2WAA
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringAInjured TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_WAA2S
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_Stand TRANS_Move
Animation = AIRngr_SKL.AIRngr_STA2RNA
AnimationMode = ONCE
End
; --- attacking (Grenade Launcher)
ConditionState = PREATTACK_B
Animation = AIRngr_SKL.AIRngr_ATBA
AnimationMode = ONCE
TransitionKey = TRANS_FiringB
End
AliasConditionState = PREATTACK_B MOVING
AliasConditionState = PREATTACK_B FIRING_B
AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B
ConditionState = FIRING_B
Animation = AIRngr_SKL.AIRngr_ATBB
AnimationMode = ONCE
TransitionKey = TRANS_FiringB
End
ConditionState = BETWEEN_FIRING_SHOTS_B
Animation = AIRngr_SKL.AIRngr_ATBB
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = TRANS_FiringB
WaitForStateToFinishIfPossible = TRANS_FiringB
End
AliasConditionState = RELOADING_B
TransitionState = TRANS_Stand TRANS_FiringB
Animation = AIRngr_SKL.AIRngr_ATBST1
AnimationMode = ONCE
End
TransitionState = TRANS_FiringB TRANS_Stand
Animation = AIRngr_SKL.AIRngr_ATBST2
AnimationMode = ONCE
End
ConditionState = PREATTACK_B REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_ATB2A
AnimationMode = ONCE
TransitionKey = TRANS_FiringBInjured
End
AliasConditionState = PREATTACK_B MOVING REALLYDAMAGED
AliasConditionState = PREATTACK_B FIRING_B REALLYDAMAGED
AliasConditionState = PREATTACK_B BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
ConditionState = FIRING_B REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_ATB2B
AnimationMode = ONCE
TransitionKey = TRANS_FiringBInjured
End
ConditionState = BETWEEN_FIRING_SHOTS_B REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_ATB2B
AnimationMode = MANUAL
Flags = START_FRAME_LAST
TransitionKey = TRANS_FiringBInjured
WaitForStateToFinishIfPossible = TRANS_FiringBInjured
End
AliasConditionState = RELOADING_B REALLYDAMAGED
TransitionState = TRANS_StandInjured TRANS_FiringBInjured
Animation = AIRngr_SKL.AIRngr_ATB2ST1
AnimationMode = ONCE
End
TransitionState = TRANS_FiringBInjured TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_ATB2ST2
AnimationMode = ONCE
End
; --- attacking (Third weapon)
ConditionState = USING_WEAPON_C
Animation = AIRngr_SKL.AIRngr_ATA
AnimationMode = LOOP
TransitionKey = TRANS_FiringC
End
ConditionState = USING_WEAPON_C REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_ATA2
AnimationMode = LOOP
TransitionKey = TRANS_FiringCInjured
End
TransitionState = TRANS_FiringC TRANS_FiringCInjured
Animation = AIRngr_SKL.AIRngr_A2WAA
AnimationMode = ONCE
End
TransitionState = TRANS_Stand TRANS_FiringC
Animation = AIRngr_SKL.AIRngr_ATAST
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringC TRANS_Stand
Animation = AIRngr_SKL.AIRngr_ATAED
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_StandInjured TRANS_FiringCInjured
Animation = AIRngr_SKL.AIRngr_S2WAA
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringCInjured TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_WAA2S
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_Stand TRANS_Move
Animation = AIRngr_SKL.AIRngr_STA2RNA
AnimationMode = ONCE
End
; -- cross-attack transitions
TransitionState = TRANS_FiringA TRANS_FiringB
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringB TRANS_FiringA
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 4 4
End
;--
TransitionState = TRANS_FiringA TRANS_FiringC
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringB TRANS_FiringC
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 4 4
End
;--
TransitionState = TRANS_FiringC TRANS_FiringB
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE
AnimationSpeedFactorRange = 4 4
End
TransitionState = TRANS_FiringC TRANS_FiringA
Animation = AIRngr_SKL.AIRngr_ATA2AB
AnimationMode = ONCE_BACKWARDS
AnimationSpeedFactorRange = 4 4
End
; --- moving
ConditionState = MOVING
Animation = AIRngr_SKL.AIRngr_RNA 30
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = TRANS_Move
ParticleSysBone = None InfantryDustTrails
End
AliasConditionState = MOVING ATTACKING
ConditionState = MOVING REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_RNB 30
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = TRANS_Move
End
AliasConditionState = MOVING REALLYDAMAGED ATTACKING
; --- dying anims
ConditionState = DYING
Animation = AIRngr_SKL.AIRngr_DTA
Animation = AIRngr_SKL.AIRngr_DTB
AnimationMode = ONCE
TransitionKey = None
End
TransitionState = TRANS_Dying TRANS_Flailing
Animation = AIRngr_SKL.AIRngr_ADTF1
AnimationMode = ONCE
End
ConditionState = DYING EXPLODED_FLAILING
Animation = AIRngr_SKL.AIRngr_ADTF2
AnimationMode = LOOP
TransitionKey = TRANS_Flailing
End
ConditionState = DYING EXPLODED_BOUNCING
Animation = AIRngr_SKL.AIRngr_ADTF3
AnimationMode = ONCE
TransitionKey = None
End
AliasConditionState = DYING SPLATTED
; --- cheering
ConditionState = SPECIAL_CHEERING
Animation = AIRngr_SKL.AIRngr_CHA
AnimationMode = LOOP
End
ConditionState = SPECIAL_CHEERING REALLYDAMAGED
Animation = AIRngr_SKL.AIRngr_CHB
AnimationMode = LOOP
End
; ----- PARACHUTING ANIMATIONS
ConditionState = FREEFALL
Animation = AIRngr_SKL.AIRngr_PFL
AnimationMode = LOOP
TransitionKey = TRANS_Falling
End
AliasConditionState = FREEFALL REALLYDAMAGED
AliasConditionState = FREEFALL DYING
ConditionState = PARACHUTING
Animation = AIRngr_SKL.AIRngr_PHG
AnimationMode = LOOP
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
TransitionKey = TRANS_Chute
End
AliasConditionState = PARACHUTING REALLYDAMAGED
AliasConditionState = PARACHUTING DYING
TransitionState = TRANS_Falling TRANS_Chute
Animation = AIRngr_SKL.AIRngr_POP
AnimationMode = ONCE
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
End
TransitionState = TRANS_Chute TRANS_Stand
Animation = AIRngr_SKL.AIRngr_PTD
AnimationMode = ONCE
End
TransitionState = TRANS_Chute TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_PTD
AnimationMode = ONCE
End
; ------- Bldg-capture
ConditionState = UNPACKING
Model = AIRngr_F_SKN
Animation = AIRngr_F_SKL.AIRngr_F_FDP1
AnimationMode = ONCE
End
AliasConditionState = UNPACKING REALLYDAMAGED
ConditionState = RAISING_FLAG
Model = AIRngr_F_SKN
Animation = AIRngr_F_SKL.AIRngr_F_FDP2
AnimationMode = ONCE
TransitionKey = TRANS_Raising
End
AliasConditionState = RAISING_FLAG REALLYDAMAGED
ConditionState = PACKING
Model = AIRngr_F_SKN
Animation = AIRngr_F_SKL.AIRngr_F_FDP1
AnimationMode = ONCE_BACKWARDS
Flags = START_FRAME_LAST
TransitionKey = TRANS_Packing
End
AliasConditionState = PACKING REALLYDAMAGED
TransitionState = TRANS_Raising TRANS_Packing
Model = AIRngr_F_SKN
Animation = AIRngr_F_SKL.AIRngr_F_FDP2
AnimationMode = ONCE_BACKWARDS
Flags = START_FRAME_LAST
End
; --- RAPPELLING ANIMATIONS
ConditionState = RAPPELLING
Animation = AIRngr_SKL.AIRngr_RPL1 ;30
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = TRANS_Rappelling
End
AliasConditionState = MOVING RAPPELLING
TransitionState = TRANS_Rappelling TRANS_Stand
Animation = AIRngr_SKL.AIRngr_RPL2
AnimationMode = ONCE
End
TransitionState = TRANS_Rappelling TRANS_StandInjured
Animation = AIRngr_SKL.AIRngr_RPL2
AnimationMode = ONCE
End
End
; ***DESIGN parameters ***
DisplayName = OBJECT:Ranger
Side = AmericaSuperWeaponGeneral
EditorSorting = INFANTRY
TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable)
WeaponSet
Conditions = None
Weapon = PRIMARY MicrowaveRangerVehicleDisabler
Weapon = SECONDARY MicrowaveRangerBuildingDisabler
Weapon = TERTIARY MicrowaveRangerHumanReheater
End
;Grenades may be moved to a new Grenadier unit - JCD
;WeaponSet
; Conditions = PLAYER_UPGRADE
; Weapon = PRIMARY RangerAdvancedCombatRifle
; Weapon = SECONDARY RangerFlashBangGrenadeWeapon
; AutoChooseSources = PRIMARY FROM_SCRIPT FROM_AI DEFAULT_SWITCH_WEAPON
; AutoChooseSources = SECONDARY FROM_SCRIPT FROM_AI
; WeaponLockSharedAcrossSets = Yes ; This set is so similar to the default set that it can hold the weapon lock
; End
ArmorSet
Conditions = None
Armor = HumanArmor
DamageFX = InfantryDamageFX
End
ArmorSet
Conditions = PLAYER_UPGRADE
Armor = ChemSuitHumanArmor
DamageFX = None
End
VisionRange = 100
ShroudClearingRange = 400
Prerequisites
Object = SupW_AmericaBarracks
End
BuildCost = 225
BuildTime = 5.0 ;in seconds
ExperienceValue = 20 20 40 60 ;Experience point value at each level
ExperienceRequired = 0 40 60 120 ;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = SupW_AmericaInfantryRangerCommandSet
; *** AUDIO Parameters ***
VoiceSelect = RangerVoiceSelect
VoiceMove = RangerVoiceMove
VoiceGuard = RangerVoiceMove
VoiceAttack = RangerVoiceAttack
VoiceFear = RangerVoiceFear
VoiceTaskComplete = RangerVoiceCaptureComplete
UnitSpecificSounds
VoiceEnter = RangerVoiceMove
VoiceEnterHostile = RangerVoiceMove
VoiceGarrison = RangerVoiceGarrison
VoiceCreate = RangerVoiceCreate
VoiceSubdue = RangerVoiceSubdue
VoiceClearBuilding = RangerVoiceClearBuilding
VoiceGetHealed = RangerVoiceMove
VoicePrimaryWeaponMode = RangerVoiceModeGun
VoiceSecondaryWeaponMode = RangerVoiceModeFlashBang
End
UnitSpecificFX
; These have the syntax of SomeNameSomewhereInCode = SomeNameSomewhereInLookupINIs
CombatDropKillFX = FX_RangerCombatDropKill
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY CAN_RAPPEL SCORE
Behavior = CommandButtonHuntUpdate ModuleTag_02
End
Body = ActiveBody ModuleTag_03
MaxHealth = 180.0
InitialHealth = 180.0
End
Behavior = ExperienceScalarUpgrade ModuleTag_04
TriggeredBy = Upgrade_AmericaAdvancedTraining
AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
End
Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba
ScanRate = 1000 ; once a second.
ScanRange = 300 ;
NeverHeal = 0.85 ; don't heal if we are > 85% healthy.
AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
End
Behavior = AIUpdateInterface ModuleTag_06
AutoAcquireEnemiesWhenIdle = Yes
End
Locomotor = SET_NORMAL BasicHumanLocomotor
Behavior = PhysicsBehavior ModuleTag_07
Mass = 5.0
End
Behavior = ProductionUpdate ModuleTag_08
; nothing
End
Behavior = CommandButtonHuntUpdate ModuleTag_09 ; allows use of command button hunt script with this unit.
End
;Behavior = WeaponSetUpgrade ModuleTag_10
; TriggeredBy = Upgrade_AmericaRangerFlashBangGrenade
;End
; --- begin Death modules ---
Behavior = SlowDeathBehavior ModuleTag_Death01
DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_RangerDie
End
Behavior = SlowDeathBehavior ModuleTag_Death02
DeathTypes = NONE +CRUSHED +SPLATTED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_GIDieCrushed
End
Behavior = SlowDeathBehavior ModuleTag_Death03
DeathTypes = NONE +EXPLODED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_RangerDie
FlingForce = 8
FlingForceVariance = 3
FlingPitch = 60
FlingPitchVariance = 10
End
Behavior = SlowDeathBehavior ModuleTag_Death04
DeathTypes = NONE +BURNED
DestructionDelay = 0
FX = INITIAL FX_DieByFireUSA
OCL = INITIAL OCL_FlamingInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death05
DeathTypes = NONE +POISONED
DestructionDelay = 0
FX = INITIAL FX_DieByToxinUSA
OCL = INITIAL OCL_ToxicInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
DeathTypes = NONE +POISONED_BETA
DestructionDelay = 0
FX = INITIAL FX_DieByToxinUSA
OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
End
Behavior = SlowDeathBehavior ModuleTag_Death07
DeathTypes = NONE +POISONED_GAMMA
DestructionDelay = 0
FX = INITIAL FX_DieByToxinGLA
OCL = INITIAL OCL_ToxicInfantryGamma
End
; --- end Death modules ---
Behavior = SquishCollide ModuleTag_12
;nothing
End
Behavior = ArmorUpgrade ModuleTag_Armor01
TriggeredBy = Upgrade_AmericaChemicalSuits
End
Behavior = PoisonedBehavior ModuleTag_17
PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me...
PoisonDuration = 3000 ; ... for this long after last hit by poison damage
End
Behavior = SpecialAbility ModuleTag_18
SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
UpdateModuleStartsAttack = Yes
StartsPaused = Yes ; Unpaused by upgrade module
InitiateSound = RangerVoiceCapture
End
Behavior = SpecialAbilityUpdate ModuleTag_19
SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
StartAbilityRange = 5.0
UnpackTime = 3000 ; (changing this will scale anim speed)
PreparationTime = 20000 ; time to complete hack once prepared (changing this will scale anim speed)
PackTime = 2000 ; (changing this will scale anim speed)
DoCaptureFX = Yes
AwardXPForTriggering = 15
;SkillPointsForTriggering = ??? -- Dustin, fill me out if you want different balance values.
End
Behavior = UnpauseSpecialPowerUpgrade ModuleTag_20
SpecialPowerTemplate = SpecialAbilityRangerCaptureBuilding
TriggeredBy = Upgrade_InfantryCaptureBuilding
End
;Behavior = LockWeaponCreate ModuleTag_21
; SlotToLock = PRIMARY ; Prevents indeterminate state plus two unpickable weapons equaling no attack.
;End
Geometry = CYLINDER
GeometryMajorRadius = 7.0
GeometryMinorRadius = 7.0
GeometryHeight = 13.0
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 14;
ShadowSizeY = 14;
ShadowTexture = ShadowI;
BuildCompletion = APPEARS_AT_RALLY_POINT
End
[/code]
Posted by: SkyMix_RMT - Tuesday, October 2, 2018 1:51:55 PM
Try replacing "LaserBoneName = MuzzleFX" with "LaserBoneName = Muzzle01" to fix the first issue.
Posted by: Gameanater - Wednesday, October 3, 2018 2:04:06 AM
Well that solved the drawing issue. I guess it's been so long since I've done modding that I forgot what I usually did for laser weapons. XD
I almost found a workaround for the garrison issue... But the Microwave Ranger is still helpless against them. He can technically attack garrisons but can't actually kill anything after I added "AllowAttackGarrisonedBldgs = Yes"
I honestly didn't expect it to do anything but I'm surprised it can technically attack since it deals zero damage to buildings.
I am having so much issue getting this guy to attack garrisons... I tried cloning the Dragon Tank weapon but that weapon hates hates hates being used by infantry even after replacing the locomotor with that of a missile's, and trying to make infantry vulnerable to KILL_GARRISONED damage KindOf just crashed the game. I didn't foresee having this much trouble with creating a Ranger with a Microwave Tank weapon but I should have figured since it already has three weapons that's why it has a burning field as its counter to infantry.
If I can get this guy to attack garrisons though I might try and make a copy of the successful weapon for the normal Microwave Tanks, which I've made able to disable vehicles already. Being able to directly attack infantry AND clear garrisons, AND diable vehicles, AND disable buildings might make the thing a worthwhile support unit.
EDIT: I'm honestly thinking maybe creating an invisible turret attached to his gun that does the building clearing? The only issues with that approach might be that he could fire at a garrison while moving and he also can't clear a building while garrisoned himself or inside a Humvee?
And... I just remembered, I hear turrets and their parents occupying a Firebase does not end well...
Posted by: SkyMix_RMT - Wednesday, October 3, 2018 4:54:15 AM
What if you try creating a DamageType just for you ranger, equal to MICROWAVE but with a different name. I believe the armor from buildings takes 0% damage from MICROWAVE DamageType, so all you gotta do is use one with a different name so that it uses the default value of 100% damage taken.
Posted by: Gameanater - Wednesday, October 3, 2018 6:46:36 PM
I didn't even know you could create new damage types. Sweet. Wouldn't your suggestion make the building itself take damage, though? What I want is for the weapon to just clear out the units in a garrison, not destroy it outright.
Posted by: SkyMix_RMT - Wednesday, October 3, 2018 8:39:10 PM
oh, I can't help you then, I don't know how garrison clearing weapons work. Good luck tho and I hope you find a solution.
Posted by: klingondragon - Thursday, October 4, 2018 5:23:20 AM
I'd take a look at the tokin tank. Not sure how it does it, but there may be something there.
(walking home from work now, I'll take a look myself when I get home)
Posted by: Gameanater - Thursday, October 4, 2018 11:04:41 PM
[code=plain]
Behavior = MissileAIUpdate ModuleTag_05
TryToFollowTarget = No
FuelLifetime = 350
DetonateOnNoFuel = Yes
InitialVelocity = 120 ; in dist/sec
IgnitionDelay = 0
DistanceToTravelBeforeTurning = 2
GarrisonHitKillRequiredKindOf = INFANTRY
GarrisonHitKillForbiddenKindOf = NONE
GarrisonHitKillCount = 2
GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
DistanceToTargetForLock = 0 ; If it gets within 100 of the target, it kills the target.
End
[/code]
Posted by: Gameanater - Friday, October 5, 2018 12:33:47 AM
So I am in the process of doing this, and creating new EMPEffectSpheroids in System.ini. And oh my gosh... EMPs are way more complicated than I thought and all this weapon and object code is starting to make my head hurt. Heheheh.
I think I'm going to create my EMP Defender first since there's far less tweaking I gotta do with that. Then I'll come back and perfect my Microwave Ranger and redone Microwave Tanks. I shall update this thread with my results with the Microwave stuffs.
Posted by: Zatsupachi - Tuesday, October 9, 2018 3:10:23 PM
Have you taken a look at the actual weapon objects? Try to look at flashbang and add that property to the laser?
Posted by: Gameanater - Wednesday, October 10, 2018 11:10:10 AM
[Code=plain]
;------------------------------------------------------------------------------
Weapon MicrowaveRangerBuildingDisabler
PrimaryDamage = 50.0
PrimaryDamageRadius = 0.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 120.0
DamageType = SUBDUAL_BUILDING
DeathType = BURNED
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
;WeaponSpeed = 10.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveRangerAttackStream ;MicrowaveDisableStream
LaserBoneName = Muzzle01
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
FireSound = MicrowaveWeaponLoop
FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
End
;------------------------------------------------------------------------------
;Instructions:
;Place human within range of the rifle and center of your cross-hairs
;Set weapon to "high" and pull trigger
;Continue until your human is a screaming, flaming husk and enjoy.
;Caution! Product will be hot!
Weapon MicrowaveRangerHumanReheater
PrimaryDamage = 20.0 ; Toasty
PrimaryDamageRadius = 2.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 120.0
DamageType = MICROWAVE ;We only wanna shoot humans with this weapon
DeathType = BURNED
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveRangerAttackStream ;MicrowaveDisableStream
LaserBoneName = Muzzle01
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
FireSound = MicrowaveWeaponLoop
FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
AllowAttackGarrisonedBldgs = Yes
End
- WeaponObjects.ini -
;------------------------------------------------------------------------------
Object MicrowaveRangerAttackStream
; *** ART Parameters ***
Draw = W3DLaserDraw ModuleTag_01
Texture = EXSineWave.tga
Tile = Yes
TilingScalar = .5
ScrollRate = -10 ;Scrolls the texture offset this fast -- towards(-) away(+)
NumBeams = 1 ;Number of overlapping cylinders that make the beam. 1 beam will just use inner data. Current max: 10
InnerBeamWidth = 8 ;The total width of beam
InnerColor = R:100 G:200 B:100 A:50 ;The inside color of the laser (hot)
OuterBeamWidth = 5.0 ;The total width of beam
OuterColor = R:96 G:255 B:96 A:5 ;The outside color of the laser (cool)
End
KindOf = IMMOBILE
ClientUpdate = LaserUpdate ModuleTag_02
MuzzleParticleSystem = GenericGreenLaserFlare
TargetParticleSystem = HackFlare
End
Behavior = DeletionUpdate ModuleTag_03
MinLifetime = 126 ; min lifetime in msec
MaxLifetime = 126 ; max lifetime in msec
End
Behavior = MissileAIUpdate ModuleTag_05
;TryToFollowTarget = Yes ;No
;FuelLifetime = 350
;DetonateOnNoFuel = Yes
;InitialVelocity = 120 ; in dist/sec
;IgnitionDelay = 0
;DistanceToTravelBeforeTurning = 2
GarrisonHitKillRequiredKindOf = INFANTRY
GarrisonHitKillForbiddenKindOf = NONE
GarrisonHitKillCount = 2
GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
DistanceToTargetForLock = 0 ; If it gets within 100 of the target, it kills the target.
End
End
;------------------------------------------------------------------------------
Object MicrowaveRangerInfantryWeaponProjectile1
; Explanation - Particles can't do damage, so this is a fast shooting low
; damage invisible missile launcher with a Microwave Tank beam trail for exhaust
; This is a modified version of DragonTankFlameProjectileUpgraded
; *** ART Parameters ***
Draw = W3DModelDraw ModuleTag_01
OkToChangeModelColor = Yes
ConditionState = NONE
Model = NULL
End
End
; Must have a draw module to be allowed to draw detonation FX
; ***DESIGN parameters ***
EditorSorting = SYSTEM
VisionRange = 0.0
ArmorSet
Conditions = None
Armor = ProjectileArmor
DamageFX = None
End
; *** ENGINEERING Parameters ***
KindOf = PROJECTILE
Body = ActiveBody ModuleTag_02
MaxHealth = 100.0
InitialHealth = 100.0
End
Behavior = DestroyDie ModuleTag_03
;nothing
End
Behavior = PhysicsBehavior ModuleTag_04
Mass = 1
AllowCollideForce = No ; flames collide, but never apply forces when they do so
End
Behavior = MissileAIUpdate ModuleTag_05
TryToFollowTarget = Yes ;No
FuelLifetime = 350
DetonateOnNoFuel = Yes
InitialVelocity = 120 ; in dist/sec
IgnitionDelay = 0
DistanceToTravelBeforeTurning = 2
GarrisonHitKillRequiredKindOf = INFANTRY
GarrisonHitKillForbiddenKindOf = NONE
GarrisonHitKillCount = 2
GarrisonHitKillFX = FX_DragonFlameGarrisonBuildingHit
DistanceToTargetForLock = 0 ; If it gets within 100 of the target, it kills the target.
End
Locomotor = SET_NORMAL PatriotMissileLocomotorReallyFast ;DragonTankFlameLocomotor
Behavior = BoneFXUpdate ModuleTag_06
PristineParticleSystem1 = bone:NULL OnlyOnce:Yes 0 0 PSys:GenericGreenLaserFlare ; Covers gap at beginning of line
PristineParticleSystem2 = bone:NULL OnlyOnce:Yes 0 0 PSys:HackFlare
PristineParticleSystem3 = bone:NULL OnlyOnce:Yes 0 0 PSys:MicrowaveRangerTrail
;PristineParticleSystem4 = bone:NULL OnlyOnce:Yes 0 0 PSys:FlameThrowerTrail04Upgraded
;PristineParticleSystem5 = bone:NULL OnlyOnce:Yes 0 0 PSys:FlameThrowerTrail06Upgraded
;PristineParticleSystem6 = bone:NULL OnlyOnce:Yes 0 0 PSys:FlameThrowerSmoke01
End
Behavior = BoneFXDamage ModuleTag_07
;nothing
End
Geometry = Sphere
GeometryIsSmall = Yes
GeometryMajorRadius = 2.0
End
[/code]
Posted by: Zatsupachi - Wednesday, October 10, 2018 2:31:39 PM
this is the actual weapon from the microwave tank
[code]
;------------------------------------------------------------------------------
Weapon MicrowaveTankBuildingClearer
PrimaryDamage = 1.0 ; Number of passengers to kill with each shot
PrimaryDamageRadius = 0.0 ; 0 primary radius means "hits only intended victim"
AttackRange = 125.0
DamageType = KILL_GARRISONED
DeathType = NORMAL
WeaponSpeed = 999999.0 ; dist/sec (huge value == effectively instant)
LaserName = MicrowaveDisableStream
LaserBoneName = WEAPON02
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 100 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
AntiAirborneVehicle = No
AntiAirborneInfantry = No
; FireSound = AngryMobAmbientLoop
; FireSoundLoopTime = 120 ; loop the firing sound until there's this much delay between shots
End
[/code]
checking microwave tank code, they don't disable vehicles, so you should have a weapon slot available maybe as a third firing mode?