Bassebombecraft

Bassebombecraft

18.5k Downloads

Team affiliation isn't clearly defined for team members spawns by AI controlled entities

Closed this issue ยท 1 comments

commented

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;
}

commented

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):

  1. Team members are registered as team members of the player.
  2. Team members doesn't obey team commands (e.g. Krenko's baton).
  3. Team member attacks the target of creator (i.e. AI controlled entity which created them).
  4. If the creator (i.e. AI controlled entity which created the team member) dies then entity should self destruct.