// Update is called once per frame public override void Update() { //..and not a server-controlled object if (!unit.netID.isServer) { return; } if (!tower.flags.is_dead) { ThinkTimer.update_timer(); if (ThinkTimer.is_over()) { clean_up_all_lists(); think(); ThinkTimer.restart(); } //if we're aiming at a target, move until within range, and attack if (unit.cur_target_obj != null) { if (unit.within_range(unit.cur_target_obj)) { unit.auto_attack(unit.cur_target_obj); } } else //continue with the objective { unit.flags.in_combat = false; } } }
// Update is called once per frame public override void Update() { if (!champ.netID.isLocalPlayer) { return; } if ((!unit.flags.is_dead) && champ.ai_takeover) { ThinkTimer.update_timer(); if (ThinkTimer.is_over()) { clean_up_all_lists(); think(); ThinkTimer.restart(); } //this is "HOLD" //if we're aiming at a target, move until within range, and attack if (unit.cur_target_obj != null) { if ((Utility.LayerTargetable(unit.cur_target_obj)) && Utility.get_dist_position(holdedPos, unit.cur_target_obj.transform.position) <= GameSceneConsts.ai_max_chase_range) { if (unit.within_range(unit.cur_target_obj)) { unit.stop_moving(); //unit.auto_attack (unit.cur_target_obj); } else //we have to move close to the target { unit.resume_moving(); unit.attackto(unit.cur_target_obj); } } else { unit.resume_moving(); unit.cur_target_obj = null; } } else //continue with the objective { unit.resume_moving(); if (Utility.get_dist_position(holdedPos, champ.transform.position) >= 0.25f) { champ.moveto(holdedPos); } } } else if (!unit.flags.is_dead) { unit.resume_moving(); holdedPos = champ.transform.position; } else if (unit.flags.is_dead) { if (unit.fac == Types.Faction.BLUE) { holdedPos = GameSceneConsts.blue_team_respawn_pt.transform.position; } else if (unit.fac == Types.Faction.RED) { holdedPos = GameSceneConsts.blue_team_respawn_pt.transform.position; } } }