Team affiliation isn't clearly defined for team members spawns by AI controlled entities
Closed this issue ยท 1 comments
Team members (e.g. kittens) created by AI controlled entities (e.g. guardians) is registered as team members but doesn't obey team commands (e.g. Krenko's baton).
Upon creation in SpawnKittenArmy.execute() entity is added to the creator's team:
// add entity to team
TeamRepository teamRepository = getBassebombeCraft().getTeamRepository();
teamRepository.add(owner, entity);
When added to the team repository in TeamRepsitory,add(..), then a entity is added t the creators team (i.e. a player):
// exit if creator isn't a member of a team,
// i.e. can be found in the global membership list
if (!teamMembership.containsKey(creator))
return;
// get team that create is member of
Team team = teamMembership.get(creator);
// get commander
EntityPlayer commander = team.commander;
// add to commanders team
addToCommandersTeam(commander, entity);
But when the AI is setup then AI is setup with the creator IN SpawnKittenArmy.execute():
buildKittenArmyAi(entity, owner);
And mob commanded targeting is only set if commander (i.e. the creator) is a player in AIUtils.setupTargetingTasks(..) :
// setup targeting if commander is player
if (isEntityPlayer(commander)) {
// type cast
EntityPlayer player = (EntityPlayer) commander;
entity.targetTasks.addTask(1, new MobCommandedTargeting(entity, player));
return;
}
Solution is for team members (e.g. kittens) created by AI controlled entities (e.g. guardians) are registered as team members but doesn't obey team commands (e.g. Krenko's baton):
- Team members are registered as team members of the player.
- Team members doesn't obey team commands (e.g. Krenko's baton).
- Team member attacks the target of creator (i.e. AI controlled entity which created them).
- If the creator (i.e. AI controlled entity which created the team member) dies then entity should self destruct.