@@ -5084,5 +5084,86 @@ void A_PainChanceSet(MapObject *mo)
5084
5084
mo->pain_chance_ = value;
5085
5085
}
5086
5086
5087
+
5088
+ // Thing will forget both current target and supported player
5089
+ void A_ClearTarget (MapObject *object)
5090
+ {
5091
+ object->SetTarget (nullptr );
5092
+ object->SetSupportObject (nullptr );
5093
+ }
5094
+
5095
+ //
5096
+ // Similar to SUPPORT_LOOKOUT but will not go to MEANDER states automatically.
5097
+ // Look for players AND enemies.
5098
+ // - If we have no player to support we try and find one.
5099
+ // - If we have no SIDE set then we will get one.
5100
+ // - If we see an enemy then we target him.
5101
+ void A_FriendLook (MapObject *object)
5102
+ {
5103
+ object->threshold_ = 0 ; // any shot will wake up
5104
+
5105
+ if (!object->support_object_ ) // no player to support yet
5106
+ {
5107
+ if (FindPlayerToSupport (object)) // try and find a player. One way or the other we will have a side at least
5108
+ {
5109
+ if (object->info_ ->seesound_ )
5110
+ {
5111
+ StartSoundEffect (object->info_ ->seesound_ , GetSoundEffectCategory (object), object, SfxFlags (object->info_ ));
5112
+ }
5113
+ }
5114
+ }
5115
+
5116
+ /*
5117
+ if (object->flags_ & kMapObjectFlagStealth)
5118
+ object->target_visibility_ = 1.0f;
5119
+
5120
+ if (force_infighting.d_)
5121
+ if (CreateAggression(object) || CreateAggression(object))
5122
+ return;
5123
+ */
5124
+
5125
+ if (!A_LookForTargets (object)) // No target found
5126
+ return ;
5127
+ else
5128
+ {
5129
+ if (object->info_ ->seesound_ )
5130
+ {
5131
+ StartSoundEffect (object->info_ ->seesound_ , GetSoundEffectCategory (object), object, SfxFlags (object->info_ ));
5132
+ }
5133
+ }
5134
+
5135
+
5136
+ }
5137
+
5138
+ //
5139
+ // FindPlayerToSupport
5140
+ //
5141
+ // Look for a Player to support
5142
+ //
5143
+ bool FindPlayerToSupport (MapObject *object)
5144
+ {
5145
+ if (object->flags_ & kMapObjectFlagStealth )
5146
+ object->target_visibility_ = 1 .0f ;
5147
+
5148
+ if (LookForPlayers (object, object->info_ ->sight_angle_ , true )) // any players around to support?
5149
+ {
5150
+ // join the player's side
5151
+ if (object->side_ == 0 )
5152
+ {
5153
+ if (object->support_object_ && object->support_object_ ->player_ )
5154
+ object->side_ = object->support_object_ ->side_ ;
5155
+ }
5156
+
5157
+ return true ;
5158
+ }
5159
+
5160
+ // default to something at least
5161
+ object->side_ = 1 ;
5162
+
5163
+ return false ;
5164
+
5165
+ }
5166
+
5167
+
5087
5168
// --- editor settings ---
5088
5169
// vi:ts=4:sw=4:noexpandtab
0 commit comments