8    public static Point GetCleanPoint(
Chara c, 
int r = -1, 
int tries = 10)
 
   13            for (
int i = 0; i < tries; i++)
 
   21                    point.Set(c._x - r + 
EClass.rnd(r * 2 + 1), c.pos.z - r + 
EClass.rnd(r * 2 + 1));
 
   25                    if (point.HasDirt || point.cell.HasLiquid)
 
   29                    foreach (
Card card 
in point.ListCards(
false))
 
   39    public override IEnumerable<
AIAct.Status> Run()
 
   45                this.pos = 
AI_Clean.GetCleanPoint(this.owner, 4, 10);
 
   51            yield 
return base.DoIdle(10);
 
   53        yield 
return base.DoGoto(this.pos, 0, 
false, 
null);
 
   54        if (this.owner.pos.HasDirt || 
this.owner.pos.cell.HasLiquid)
 
   56            EClass._map.SetDecal(this.pos.x, 
this.pos.z, 0, 1, 
true);
 
   57            EClass._map.SetLiquid(this.pos.x, 
this.pos.z, 0, 0);
 
   58            this.pos.PlayEffect(
"vanish");
 
   59            this.owner.Say(
"clean", this.owner, 
null, 
null);
 
   60            this.owner.PlaySound(
"clean_floor", 1f, 
true);
 
   61            yield 
return base.KeepRunning();
 
   63        List<Card> list = this.owner.pos.ListCards(
false);
 
   65        foreach (
Card card 
in list)
 
   69                bool isInstalled = card.IsInstalled;
 
   74            this.owner.Talk(
"clean", 
null, 
null, 
false);
 
   76        yield 
return base.Success(
null);
 
   84    public int maxRadius = -1;