AI Bossfight

Lithtech Jupiter engine

Post Reply
User avatar
Spawn
Admin
Admin
Posts: 1310
Joined: Sun Jul 25, 2004 12:50 am
Location: Norway
Contact:

AI Bossfight

Post by Spawn » Fri Apr 06, 2007 10:27 pm

Hi,

Wonder what I'm overlooking here..
I've been creating a Bossfight scene lately, and I have two problems!

1.Make him die on the right time, which seems to be various depending on the weapon. So I had to set the guy to 'Neverdestroy=True' and then hid him when the displaymeter was drained. And then spawned a new guy who could do the dying part.. I guess that explains the Cutscene's right after a bossfight in the game.

I set the Displaymeter to value 100 and used the damageproperties in the CAIhuman to send the commands to the displaymeter (called meter00 here)

Image

When the Displaymeter reaches a value of 2 (0 didn't work) it sends a command to trigger20 and the AI is removed and life goes on


2. the displaymeter empties in less than a sec if he's been tagged, poisoned or burned.
Meaning that 1 phoes bullet would toast him :angry:

Otherwise it is all working just fine,then I thought of something.. You cannot tag supersoldiers and a few other characters, so i figured that I could make a new
character with similar settings as they have.

here's what I've been doing:

I copied the Sovietsoldier ltb and renamed it to HarmBoss1.
Gave it a new set of textures, and made a spot for him in the Modelbutes.txt
[Model103]

Name  = "HarmBoss1"
SoundTemplate = "barnes"
Type  = 0
Skeleton  = 0
Mass  = 2000.0
HitPoints  = 200.0
MaxHitPoints = 200.0
Armor  = 50.0
MaxArmor  = 200.0
Energy  = 0
MaxEnergy  = 0
MinSearchTime = 2.0
MaxSearchTime = 4.0
ModelFile  = "chars\models\soldrsov.ltb"
Skin0  = "chars\skins\HARMBOSS.dtx"
Skin1  = "chars\skins\HARMBOSSHEAD.dtx"

RenderStyle0 = "RS\NinjaTranslucent.ltb"
AltHeadSkin0  = "chars\skins\HARMBOSSHEAD.dtx"
AltHeadSkin1  = "chars\skins\wntrhead1.dtx"
AltHeadSkin2  = "chars\skins\wntrhead2.dtx"
AltHeadSkin3  = "chars\skins\sovhead.dtx"
AltHeadSkin4  = "chars\skins\sovhead1.dtx"
AltHeadSkin5  = "chars\skins\sovhead2.dtx"
DefaultAttachment0 = "Head, sovietcap"
AIName  = "HarmBoss1"
Animation  = "Attributes\\AnimationsHuman.txt"
Then I made a spot for him in the AIbutes.txt
and the main purpose was to make him immune against phoes, bananas etc..
[Brain14] //////////////////////////////////////////////////////////////////////////

Name        = "HarmBoss1"
       
DodgeVectorCheckTime    = 0.25
DodgeVectorCheckChance    = 1.00
DodgeVectorDelayTime    = 3.00
DodgeVectorShuffleDist    = 109.0
DodgeVectorRollDist    = 140.0
DodgeVectorShuffleChance  = 0.7 //  \
DodgeVectorRollChance    = 0.3 //  >- must add up to 1.0
DodgeVectorBlockChance    = 0.0 //  /
DodgeProjectileCheckTime  = 0.25
DodgeProjectileCheckChance  = 1.00
DodgeProjectileDelayTime  = 3.00
DodgeProjectileFleeChance  = 1.00 //  >- must add up to 1.0
       
AttackRangedRange    = [0.0, 500.0000]
AttackThrownRange    = [350.0, 1000.000]
AttackMeleeRange    = [0.0, 100.0]
AttackChaseTime      = 0.500000
AttackChaseTimeRandom    = [-0.250000, 0.250000]
AttackPoseCrouchChance    = 0.01
AttackPoseCrouchTime    = 10.0
AttackGrenadeThrowTime    = 10.00
AttackGrenadeThrowChance  = 0.50
AttackCoverCheckTime    = 5.00
AttackCoverCheckChance    = 0.125
AttackSoundTimeMin    = 5.0

AttackFromCoverCoverTime  = 1.000000
AttackFromCoverCoverTimeRandom  = 1.000000
AttackFromCoverUncoverTime  = 5.000000
AttackFromCoverUncoverTimeRandom = 2.000000
AttackFromCoverReactionTime  = 0.250000
AttackFromCoverMaxRetries  = 3
AttackWhileMoving    = TRUE

AttackFromVantageAttackTime  = 2.000000
AttackFromVantageAttackTimeRandom = 2.000000

AttackFromViewChaseTime    = 5.0
       
ChaseExtraTime      = 0.4000
ChaseExtraTimeRandom    = [-0.1, 0.1]
ChaseSearchTime      = 4.0

PatrolSoundTime      = 8.0
PatrolSoundTimeRandom    = [-1.0, 2.0]
PatrolSoundChance    = 0.25
       
DistressFacingThreshhold  = 0.95
DistressIncreaseRate    = 0.5
DistressDecreaseRate    = 0.2
DistressLevels      = 4

MajorAlarmThreshold    = 5
ImmediateAlarmThreshold    = 10

CrawlThreshhold      = 0.00000
CrawlChance      = 0.00000
CrawlLifetime      = 0.00000

TauntDelay      = 0.000000
TauntChance      = 0.000000

CanLipSync      = TRUE

DamageMask      = "HarmBoss1"
AIData0 = "MinPathWeight=1.0"
AIData1 = "BreaksDoors=1.0"
AIData2 = "IgnoreJunctions=1.0"
AIData3 = "DivergePaths=1.0"

///////////////////////////////////////////////////////////////////////////////////
and... a bit further down
[AttributeTemplate20]

Name      = "HarmBoss1"
RunSpeed      = 280.0
JumpSpeed      = 280.0
JumpOverSpeed    = 280.0
FallSpeed      = 250.0
CrawlSpeed      = 25.0
WalkSpeed      = 70.0
SwimSpeed      = 0.0
FlySpeed      = 0.0
Marksmanship    = 0.8
Bravado      = 0.95
SoundRadius      = 1500.0
HitPoints      = 70.0
Armor      = 0
Accuracy      = 0.25
AccuracyIncreaseRate  = 1.0
AccuracyDecreaseRate  = 1.0
FullAccuracyRadius    = 256.0
AccuracyMissPerturb    = 64.0
MaxMovementAccuracyPerturb  = 10.0
MovementAccuracyPerturbTime  = 3.0
CanSeeEnemy      = TRUE
SeeEnemyDistance    = 2000.0
CanSeeEnemyLean    = TRUE
SeeEnemyLeanDistance  = 1000.0
CanSeeAllyDeath    = TRUE
SeeAllyDeathDistance  = 640.0
CanHearAllyDeath    = TRUE
HearAllyDeathDistance  = 128.0
CanHearAllyPain    = TRUE
HearAllyPainDistance  = 0.0
CanHearEnemyFootstep  = TRUE
HearEnemyFootstepDistance  = 0.0
CanSeeEnemyFootprint  = TRUE
SeeEnemyFootprintDistance  = 384.0
CanHearEnemyWeaponImpact  = TRUE
HearEnemyWeaponImpactDistance = 0.0
CanHearEnemyWeaponFire  = TRUE
HearEnemyWeaponFireDistance  = 0.0
CanHearAllyWeaponFire  = TRUE
HearAllyWeaponFireDistance  = 0.0
CanSeeEnemyFlashlight  = TRUE
SeeEnemyFlashlightDistance  = 512.0
CanHearEnemyDisturbance  = TRUE
HearEnemyDisturbanceDistance = 0.0
CanSeeEnemyDisturbance  = TRUE
SeeEnemyDisturbanceDistance  = 500.0
CanSeeEnemyLightDisturbance  = TRUE
SeeEnemyLightDisturbanceDistance= 2000.0
CanSeeEnemyWeaponImpact  = TRUE
SeeEnemyWeaponImpactDistance = 200.0
CanHearEnemyAlarm    = TRUE
HearEnemyAlarmDistance  = 0.0
CanSeeAllySpecialDamage  = TRUE
SeeAllySpecialDamageDistance = 0.0
CanSeeAllyDisturbance  = TRUE
SeeAllyDisturbanceDistance  = 0.0
CanHearAllyDisturbance  = TRUE
HearAllyDisturbanceDistance  = 0.0
CanSeeAllyDistress    = TRUE
SeeAllyDistressDistance  = 0.0
CanSeeProjectile    = FALSE
SeeProjectileDistance  = 0.0
CanSeeEnemyDanger    = TRUE
SeeEnemyDangerDistance  = 0.0
CanUseVolumeAmbientLife  = FALSE
Alignment      = "BadCharacter"
and ofcourse the damagemask settings:
[DamageMask5]
Name = "HarmBoss1"
Damage0 = "Melee"
Damage1 = "Sword"
Damage2 = "Bullet"
Damage3 = "Explode"
I left out

"Burn"
"Electrocute"
"choke"
"slippery"
"poison"

and I hoped that would cure the problem, but he's still kaput after one cyanid bullet, or any tag! I thought this would make him ignore Bananas and other tags atleast :unsure:


Does anyone have a bright idea that might do the trick?

(a beer didn't help, already tried that)
Image

User avatar
SPYDAVE
Pegasus Modteam
Pegasus Modteam
Posts: 302
Joined: Sat Aug 14, 2004 4:52 am
Contact:

Post by SPYDAVE » Fri Apr 06, 2007 11:32 pm

Leaving cyanide & tags out isn't an option I guess?

What you have (I didn't go through it line by line though) sounds like it would work ... (Yet in reality almost nothing works like it should) ...
Image

User avatar
Spawn
Admin
Admin
Posts: 1310
Joined: Sun Jul 25, 2004 12:50 am
Location: Norway
Contact:

Post by Spawn » Fri Apr 06, 2007 11:42 pm

I wonder if some of these settings are in the model itself,
and that leaving them out would be the only option :unsure:

Or maybe as Canada suggested, getting the supersoldiers back in buisness!
Image

User avatar
SPYDAVE
Pegasus Modteam
Pegasus Modteam
Posts: 302
Joined: Sat Aug 14, 2004 4:52 am
Contact:

Post by SPYDAVE » Sat Apr 07, 2007 5:10 am

This probably won't help but wonder if instead of just leaving the damage values off here ...

[DamageMask5]
Name = "HarmBoss1"
Damage0 = "Melee"
Damage1 = "Sword"
Damage2 = "Bullet"
Damage3 = "Explode"

You added an empty string ...

Damage4 = ""

Or reused a value ...

Damage3 = "Explode"
Damage4 = "Explode"

... What I am getting at is ... I wonder if these values aren't hard coded in and you just simply have the opportunity to change them in the DamageMask ... (EX: Damage3 is bullet by default UNLESS something else is put in it's place.

(Worth a try)
Image

User avatar
Spawn
Admin
Admin
Posts: 1310
Joined: Sun Jul 25, 2004 12:50 am
Location: Norway
Contact:

Post by Spawn » Sat Apr 07, 2007 6:24 pm

I figured out that I'll use a supersoldier instead..

Remember when you took down the supersoldiers, they have a damagemask for 'supersoldier serum', but you'll have to shoot them for ages to drain their hitpoints, and then it destroys. Which means that they fall asleep for a few sec.. The actual supersoldier serum boiling effect is a goal which is sent to the CAI when it gets hit by a serum bullet, but the object has to be destroyed for that to work.. (msg CAIHuman00 SerumDeath will change his goal to finaldeath)
[DamageMask0]
Name = "SSoldier"
Damage0 = "AntiSuperSoldierSerum"
Damage1 = "Bullet"
Damage2 = "Explode"
Damage3 = "Melee"
Damage4 = "Sword"
I'm starting to believe that there are source stuff involved here, since the new character doesn't work with similar masks..


To finish the meter in a good way could be to send a Delay 1 (msg CAIHuman00 destroy) along with a msg displaymeter (minus 2) message from the last phase of the meter :)

The delay should take care of the last 2 to reach a value of 100!

The Scene is complete B) yayy!

(But I won't quit on the new character either, I will make that sucker work)
Image

Post Reply
jedwabna poszewka 50x60