my Companion is not Friendly
Moderator: GZDoom Developers
Forum rules
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
Before asking on how to use a ZDoom feature, read the ZDoom wiki first. If you still don't understand how to use a feature, then ask here.
Please bear in mind that the people helping you do not automatically know how much you know. You may be asked to upload your project file to look at. Don't be afraid to ask questions about what things mean, but also please be patient with the people trying to help you. (And helpers, please be patient with the person you're trying to help!)
- JuliusKoolius
- Posts: 56
- Joined: Tue Apr 07, 2020 4:20 pm
- Location: Even I don't know
my Companion is not Friendly
Can someone please tell me how to make it so that your companion in your companion mod is friendly towards the player? because whenever I try to make my companion friendly and test it, he is still hostile to me.
- JuliusKoolius
- Posts: 56
- Joined: Tue Apr 07, 2020 4:20 pm
- Location: Even I don't know
Re: my Companion is not Friendly
Here is the current code that I have (and yes I know that it is just an edited version of Brutal Friends)
ACTOR FriendHissy : SwitchableDecoration
{
Scale 1.0
Health 9999999
Radius 16
Height 56
Mass 400
MaxTargetRange 2000
Speed 9
FastSpeed 20
PainChance 250
Species "Marines"
+FLOATBOB
MONSTER
+ismonster
+FRIENDLY
+LOOKALLAROUND
+FLOORCLIP
-FASTER
+MTHRUSPECIES
+THRUSPECIES
+DONTHURTSPECIES
+NOBLOCKMONST
+USESPECIAL
-CANNOTPUSH
-COUNTKILL
+FLOAT
+NOGRAVITY
+THRUACTORS
-SHOOTABLE
+NODAMAGETHRUST
-SOLID
+NOBLOCKMONST
+INVULNERABLE
+NOBLOOD
Damage 10
MaxStepHeight 48
MaxDropOffHeight 48
MeleeDamage 6
States
{
Spawn:
CACB A 1
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
CACB A 1 A_Look
Loop
ForgetTarget:
TNT1 A 0 A_ClearTarget
Goto See
Idle:
See:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 0)
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0 A_ChangeFlag("FASTER", 0)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPLayer")//
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_CheckSight("ForgetTarget")
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_CheckSight("FollowPLayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
Goto See
FollowPlayer:
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("FASTER", 1)
TNT1 A 0 A_JumpIfCloser(150, "Waits")
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 0)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 0)
CACB A 1 A_Chase
TNT1 A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
NULL A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
TNT1 A 0 A_JumpIfTargetInLOS("See")
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
Loop
CheckRangeToWait:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(150, "Waits")
Goto FollowPLayer
CheckIfPlayerSee:
TNT1 A 0
CACB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FastChase
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
////TNT1 A 0 Thing_Hate(94, 0, 0)
TNT1 A 0 A_JumpIfCloser(1000, 2)
Goto Pathfind
TNT1 AAA 0
Goto FollowPlayer
Pathfind:
TNT1 A 0
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_JumpIFInTargetInventory("IsPLayer", 1, 1)
Goto FollowPLayer
//TNT1 A 1 A_Chase("", "")
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("NOCLIP", 1)
TNT1 A 0 A_ChangeFlag("SOLID", 0)
TNT1 A 0 A_Noblocking
TNT1 A 0 A_SpawnItemEx ("FriendHissyPathfinder",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
Stop
Waits:
CACB A 1
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, 2)
TNT1 A 0 A_ClearTarget
Goto See
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
TNT1 A 0 A_ChangeFlag("SOLID", 0)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "BecomeEnemy23")
TNT1 A 0 A_Jump(32, "Waits2")
TNT1 A 0 A_Jump(32, "Waits3")
CACB A 4 A_Stop
CACB A 4 A_Stop
TNT1 A 0 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
Goto FollowPlayer
Waits2:
TNT1 A 0 A_SetAngle(random(90, -90) + angle)
CACB A 6 A_Stop
TNT1 A 0 //A_PlaySound("MRNWT", 2)
CACB A 6 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(300, "Waits")
Goto FollowPLayer
Waits3:
TNT1 A 0
//TNT1 A 0 A_JumpIfInTargetInventory("Clip2", 40, 3)
//Goto GiveAmmo
TNT1 AAA 0
TNT1 A 0 A_SetAngle(random(90, -90) + angle)
CACB A 4 A_Stop
TNT1 A 0 //A_PlaySound("MRNWC", 2)
CACB A 4 A_Stop
CACB DED 1 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(300, "Waits")
Goto FollowPLayer
//Disabled
GiveAmmo:
TNT1 A 0
MR7S A 10 A_FaceTarget
TNT1 A 0 //A_PlaySound("MRNGI1")
MR8S CD 15
TNT1 A 0 A_GiveToTarget("Clip2", 50)
//TNT1 A 0 A_SpawnItemEx("Stimpack", 40, 0)
Goto Waits
Missile:
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, "CheckRetreat") // Brutal Doom-friendly realistic AI.
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMastermind", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABaronOfHell", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMancubus", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")////Never remove this one!
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
TNT1 A 0 A_ChangeFlag("SOLID", 1)
TNT1 A 0 A_JumpIfCloser(200, "Retreat")
TNT1 A 0 A_FaceTarget
CACB A 1 A_Chase ("","")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
ActualFireState:
CACB B 4 A_FaceTarget
TNT1 A 0 A_CustomMissile("HissyFireball",6,0)
CACB CB 4 A_Facetarget
Goto See
CheckRetreat:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(300, "Retreat")
Goto ActualFireState
Active:
TNT1 A 0
TNT1 A 0 A_CustomMissile ("OrderTitle2", 10, 0, 0, 2, 90)
TNT1 A 0 A_PlaySound("BabyCaco/Sight", 4)
CACB BCBA 4 A_FaceTarget
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
TNT1 A 0 A_SpawnItemEx ("FriendHissy_Guarding",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 1
TNT1 A -1
Stop
Death:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0) //Always add this line on every death animation, to prevent the player from resurrecting the actor by pressing use.
TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
CACB E 6 A_NoBlocking
TNT1 A 0 A_SetFloorClip
TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
TNT1 A 0 A_PlaySound("BabyCaco/death", 4)
CACB FGHIJ 6
CACB K -1
Stop
}
}
ACTOR FriendHissy_Guarding : FriendHissy
{
Speed 0
FastSpeed 0
+FRIENDLY
Mass 500
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
CACB A 4
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_GiveInventory("TargetIsAMarine")//Stops multiple sentries from firing at each other.
CACB A 4 A_Look
Loop
See:
TNT1 A 0
TNT1 A 0 A_ClearTarget
CACB AAAAAAAAAAAAAAAAAAAAAAAAAAAAADED 1 A_Chase
TNT1 A 0 A_FaceTarget
Loop
See2:
CACB A 2
TNT1 A 0 A_ClearTarget
Goto See
Missile:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, "CheckRetreat") // Brutal Doom-friendly realistic AI.
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMastermind", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABaronOfHell", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMancubus", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")////Never remove this one!
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
TNT1 A 0 A_ChangeFlag("SOLID", 1)
TNT1 A 0 A_JumpIfCloser(200, "Retreat")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
ActualFireState:
CACB B 4 A_FaceTarget
TNT1 A 0 A_CustomMissile("HissyFireball",6,0)
CACB CB 4 A_Facetarget
Goto See
CheckRetreat:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(300, "Retreat")
Goto ActualFireState
Retreat:
TNT1 A 0
CACB A 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
NULL A 0
CACB B 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
NULL A 0
CACB C 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
CACB D 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
Goto ActualFireState
Pain:
CACB D 2
TNT1 A 0 A_PlaySound("BabyCaco/pain", 4)
CACB E 2 A_Pain
Goto See + 1
Death:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0) //Always add this line on every death animation, to prevent the player from resurrecting the actor by pressing use.
TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
CACB E 6 A_NoBlocking
TNT1 A 0 A_SetFloorClip
TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
TNT1 A 0 A_PlaySound("BabyCaco/death", 4)
CACB FGHIJ 6
CACB K -1
Stop
Active:
TNT1 A 0
TNT1 A 0 A_PlaySound("BabyCaco/pain", 4)
TNT1 A 0 A_CustomMissile ("OrderTitle1", 10, 0, 0, 2, 90)
CACB BCBA 4 A_FaceTarget
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
TNT1 A 0 A_SpawnItemEx ("FriendHissy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 1
TNT1 A -1
Stop
}
}
ACTOR FriendHissyPathfinder
{
Radius 32
Height 56
Speed 20
Health 9999
PainChance 255
MaxTargetRange 150
Monster
damagefactor "SpawnMarine", 99999.0
MaxDropOffHeight 1200
MaxStepHeight 1200
-COUNTKILL
+NOTARGET
+THRUACTORS
+MISSILEMORE
+MISSILEEVENMORE
+FASTER
+DONTSPLASH
-FRIENDLY
+NOCLIP
+LOOKALLAROUND
+NOINFIGHTING
States
{
Spawn:
Pain:
See:
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
//TNT1 A 0 Thing_ChangeTID(0,98)
//TNT1 A 0 Thing_Hate(98, 0, 0)
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
TNT1 AAAAA 1 A_Chase
//TNT1 A 0 Thing_Hate(98, 0, 0)
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
TNT1 A 0 A_FaceTarget
Loop
//Missile:
TNT1 A 2
TNT1 A 0 A_SpawnItem("MarineSpawnChecker")
TNT1 A 5
Goto See
Death:
Missile:
TNT1 A 0
TNT1 A 1 A_FaceTarget
TNT1 A 0 A_Recoil(-6)
TNT1 A 4
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_SpawnItemEx("FriendHissy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 0 A_SpawnItem("TeleportFog")
Stop
}
}
ACTOR HissyFireball
{
Radius 13
Height 8
Speed 25
Damage 10
Projectile
+RANDOMIZE
+THRUSPECIES
+MTHRUSPECIES
RenderStyle Add
Species "Marines"
Alpha 0.99
Scale 1.6
SeeSound "imp/attack"
DeathSound "imp/shotx"
Obituary "$OB_MPPLASMARIFLE"
Damagetype "Plasma"
States
{
Spawn:
BCAB AB 6 Bright
Loop
Death:
BCAB CDE 4 Bright
Stop
}
}
ACTOR FriendHissy : SwitchableDecoration
{
Scale 1.0
Health 9999999
Radius 16
Height 56
Mass 400
MaxTargetRange 2000
Speed 9
FastSpeed 20
PainChance 250
Species "Marines"
+FLOATBOB
MONSTER
+ismonster
+FRIENDLY
+LOOKALLAROUND
+FLOORCLIP
-FASTER
+MTHRUSPECIES
+THRUSPECIES
+DONTHURTSPECIES
+NOBLOCKMONST
+USESPECIAL
-CANNOTPUSH
-COUNTKILL
+FLOAT
+NOGRAVITY
+THRUACTORS
-SHOOTABLE
+NODAMAGETHRUST
-SOLID
+NOBLOCKMONST
+INVULNERABLE
+NOBLOOD
Damage 10
MaxStepHeight 48
MaxDropOffHeight 48
MeleeDamage 6
States
{
Spawn:
CACB A 1
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
CACB A 1 A_Look
Loop
ForgetTarget:
TNT1 A 0 A_ClearTarget
Goto See
Idle:
See:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 0)
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0 A_ChangeFlag("FASTER", 0)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPLayer")//
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_CheckSight("ForgetTarget")
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPLayer")//
TNT1 A 0 A_CheckSight("FollowPLayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
CACB AA 1 A_Chase
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
Goto See
FollowPlayer:
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("FASTER", 1)
TNT1 A 0 A_JumpIfCloser(150, "Waits")
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 0)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 0)
CACB A 1 A_Chase
TNT1 A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
NULL A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
TNT1 A 0
CACB AA 1 A_Chase
NULL A 0
TNT1 A 0
TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
TNT1 A 0 A_JumpIfTargetInLOS("See")
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_CheckSight("CheckIfPlayerSee")
Loop
CheckRangeToWait:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(150, "Waits")
Goto FollowPLayer
CheckIfPlayerSee:
TNT1 A 0
CACB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FastChase
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
////TNT1 A 0 Thing_Hate(94, 0, 0)
TNT1 A 0 A_JumpIfCloser(1000, 2)
Goto Pathfind
TNT1 AAA 0
Goto FollowPlayer
Pathfind:
TNT1 A 0
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_JumpIFInTargetInventory("IsPLayer", 1, 1)
Goto FollowPLayer
//TNT1 A 1 A_Chase("", "")
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("NOCLIP", 1)
TNT1 A 0 A_ChangeFlag("SOLID", 0)
TNT1 A 0 A_Noblocking
TNT1 A 0 A_SpawnItemEx ("FriendHissyPathfinder",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
Stop
Waits:
CACB A 1
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, 2)
TNT1 A 0 A_ClearTarget
Goto See
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
TNT1 A 0 A_ChangeFlag("SOLID", 0)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "BecomeEnemy23")
TNT1 A 0 A_Jump(32, "Waits2")
TNT1 A 0 A_Jump(32, "Waits3")
CACB A 4 A_Stop
CACB A 4 A_Stop
TNT1 A 0 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(200, "Waits")
Goto FollowPlayer
Waits2:
TNT1 A 0 A_SetAngle(random(90, -90) + angle)
CACB A 6 A_Stop
TNT1 A 0 //A_PlaySound("MRNWT", 2)
CACB A 6 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(300, "Waits")
Goto FollowPLayer
Waits3:
TNT1 A 0
//TNT1 A 0 A_JumpIfInTargetInventory("Clip2", 40, 3)
//Goto GiveAmmo
TNT1 AAA 0
TNT1 A 0 A_SetAngle(random(90, -90) + angle)
CACB A 4 A_Stop
TNT1 A 0 //A_PlaySound("MRNWC", 2)
CACB A 4 A_Stop
CACB DED 1 A_Stop
TNT1 A 0 A_CheckSight("FollowPlayer")
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_ClearTarget
CACB A 0 A_Look
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
CACB A 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
TNT1 A 0 A_CheckSIght("FollowPlayer")
TNT1 A 0 A_JumpIfCloser(300, "Waits")
Goto FollowPLayer
//Disabled
GiveAmmo:
TNT1 A 0
MR7S A 10 A_FaceTarget
TNT1 A 0 //A_PlaySound("MRNGI1")
MR8S CD 15
TNT1 A 0 A_GiveToTarget("Clip2", 50)
//TNT1 A 0 A_SpawnItemEx("Stimpack", 40, 0)
Goto Waits
Missile:
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, "CheckRetreat") // Brutal Doom-friendly realistic AI.
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMastermind", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABaronOfHell", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMancubus", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")////Never remove this one!
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
TNT1 A 0 A_ChangeFlag("SOLID", 1)
TNT1 A 0 A_JumpIfCloser(200, "Retreat")
TNT1 A 0 A_FaceTarget
CACB A 1 A_Chase ("","")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
ActualFireState:
CACB B 4 A_FaceTarget
TNT1 A 0 A_CustomMissile("HissyFireball",6,0)
CACB CB 4 A_Facetarget
Goto See
CheckRetreat:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(300, "Retreat")
Goto ActualFireState
Active:
TNT1 A 0
TNT1 A 0 A_CustomMissile ("OrderTitle2", 10, 0, 0, 2, 90)
TNT1 A 0 A_PlaySound("BabyCaco/Sight", 4)
CACB BCBA 4 A_FaceTarget
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
TNT1 A 0 A_SpawnItemEx ("FriendHissy_Guarding",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 1
TNT1 A -1
Stop
Death:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0) //Always add this line on every death animation, to prevent the player from resurrecting the actor by pressing use.
TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
CACB E 6 A_NoBlocking
TNT1 A 0 A_SetFloorClip
TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
TNT1 A 0 A_PlaySound("BabyCaco/death", 4)
CACB FGHIJ 6
CACB K -1
Stop
}
}
ACTOR FriendHissy_Guarding : FriendHissy
{
Speed 0
FastSpeed 0
+FRIENDLY
Mass 500
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
CACB A 4
TNT1 A 0 A_ChangeFLag("FRIENDLY", 1)
TNT1 A 0 A_GiveInventory("TargetIsAMarine")//Stops multiple sentries from firing at each other.
CACB A 4 A_Look
Loop
See:
TNT1 A 0
TNT1 A 0 A_ClearTarget
CACB AAAAAAAAAAAAAAAAAAAAAAAAAAAAADED 1 A_Chase
TNT1 A 0 A_FaceTarget
Loop
See2:
CACB A 2
TNT1 A 0 A_ClearTarget
Goto See
Missile:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("NODROPOFF", 1)
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsACyberdemon", 1, "CheckRetreat") // Brutal Doom-friendly realistic AI.
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMastermind", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABaronOfHell", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMancubus", 1, "CheckRetreat")//...
TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")////Never remove this one!
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
TNT1 A 0 A_ChangeFlag("SOLID", 1)
TNT1 A 0 A_JumpIfCloser(200, "Retreat")
TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
ActualFireState:
CACB B 4 A_FaceTarget
TNT1 A 0 A_CustomMissile("HissyFireball",6,0)
CACB CB 4 A_Facetarget
Goto See
CheckRetreat:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(300, "Retreat")
Goto ActualFireState
Retreat:
TNT1 A 0
CACB A 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
NULL A 0
CACB B 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
NULL A 0
CACB C 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
CACB D 2 A_Recoil(1)
TNT1 A 0 A_FaceTarget
Goto ActualFireState
Pain:
CACB D 2
TNT1 A 0 A_PlaySound("BabyCaco/pain", 4)
CACB E 2 A_Pain
Goto See + 1
Death:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0) //Always add this line on every death animation, to prevent the player from resurrecting the actor by pressing use.
TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
CACB E 6 A_NoBlocking
TNT1 A 0 A_SetFloorClip
TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
TNT1 A 0 A_PlaySound("BabyCaco/death", 4)
CACB FGHIJ 6
CACB K -1
Stop
Active:
TNT1 A 0
TNT1 A 0 A_PlaySound("BabyCaco/pain", 4)
TNT1 A 0 A_CustomMissile ("OrderTitle1", 10, 0, 0, 2, 90)
CACB BCBA 4 A_FaceTarget
TNT1 A 0 A_ChangeFLag("FRIENDLY", 0)
TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
TNT1 A 0 A_SpawnItemEx ("FriendHissy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 1
TNT1 A -1
Stop
}
}
ACTOR FriendHissyPathfinder
{
Radius 32
Height 56
Speed 20
Health 9999
PainChance 255
MaxTargetRange 150
Monster
damagefactor "SpawnMarine", 99999.0
MaxDropOffHeight 1200
MaxStepHeight 1200
-COUNTKILL
+NOTARGET
+THRUACTORS
+MISSILEMORE
+MISSILEEVENMORE
+FASTER
+DONTSPLASH
-FRIENDLY
+NOCLIP
+LOOKALLAROUND
+NOINFIGHTING
States
{
Spawn:
Pain:
See:
TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
//TNT1 A 0 Thing_ChangeTID(0,98)
//TNT1 A 0 Thing_Hate(98, 0, 0)
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
TNT1 AAAAA 1 A_Chase
//TNT1 A 0 Thing_Hate(98, 0, 0)
TNT1 A 0
TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
TNT1 A 0 A_FaceTarget
Loop
//Missile:
TNT1 A 2
TNT1 A 0 A_SpawnItem("MarineSpawnChecker")
TNT1 A 5
Goto See
Death:
Missile:
TNT1 A 0
TNT1 A 1 A_FaceTarget
TNT1 A 0 A_Recoil(-6)
TNT1 A 4
TNT1 A 0 A_Scream
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_SpawnItemEx("FriendHissy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 A 0 A_SpawnItem("TeleportFog")
Stop
}
}
ACTOR HissyFireball
{
Radius 13
Height 8
Speed 25
Damage 10
Projectile
+RANDOMIZE
+THRUSPECIES
+MTHRUSPECIES
RenderStyle Add
Species "Marines"
Alpha 0.99
Scale 1.6
SeeSound "imp/attack"
DeathSound "imp/shotx"
Obituary "$OB_MPPLASMARIFLE"
Damagetype "Plasma"
States
{
Spawn:
BCAB AB 6 Bright
Loop
Death:
BCAB CDE 4 Bright
Stop
}
}