Elin Decompiled Documentation EA 23.333 Myaightly Patch 1
Loading...
Searching...
No Matches
ActWater.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4public class ActWater : Act
5{
7
9
11
12 public override bool CanPerform()
13 {
14 return IsWaterCanValid(msg: false);
15 }
16
17 public override bool Perform()
18 {
19 Act.CC.Say("water_ground", Act.CC);
20 int num = waterCan.owner.Evalue(770);
21 num = ((num <= 0) ? 1 : Mathf.Min(waterCan.owner.c_charges, 2 + num / 10));
22 if (num > 1)
23 {
24 List<Point> list = EClass._map.ListPointsInSquare(Act.TP, num - 1, mustBeWalkable: false, los: false);
25 list.Sort((Point a, Point b) => a.Distance(Act.TP) - b.Distance(Act.TP));
26 foreach (Point item in list)
27 {
28 if (!IsWaterCanValid())
29 {
30 break;
31 }
32 Water(item);
33 }
34 }
35 else
36 {
37 Water(Act.TP);
38 }
39 Act.CC.PlaySound("water_farm");
41 return base.Perform();
42 static void Water(Point pos)
43 {
44 if (TaskWater.ShouldWater(pos))
45 {
46 Act.CC.ModExp(286, 15);
47 }
48 if (!pos.cell.IsTopWater && !pos.cell.IsSnowTile)
49 {
50 pos.cell.isWatered = true;
51 }
52 foreach (Chara chara in pos.Charas)
53 {
54 bool flag = false;
55 if (chara.HasCondition<ConBurning>())
56 {
57 flag = true;
58 chara.Talk("thanks");
59 }
60 else if (!chara.IsPCParty && EClass.rnd(2) == 0)
61 {
62 chara.Say("water_evade", chara);
63 if (!chara.IsHostile())
64 {
65 chara.Talk("scold");
66 }
67 continue;
68 }
69 chara.AddCondition<ConWet>();
70 if (!flag)
71 {
72 Act.CC.DoHostileAction(chara);
73 }
74 }
75 }
76 }
77
78 public bool IsWaterCanValid(bool msg = true)
79 {
80 bool num = waterCan != null && waterCan.owner.c_charges > 0;
81 if (!num && msg)
82 {
83 Msg.Say("water_deplete");
84 }
85 return num;
86 }
87}
bool IsWaterCanValid(bool msg=true)
Definition: ActWater.cs:78
override bool Perform()
Definition: ActWater.cs:17
TraitToolWaterCan waterCan
Definition: ActWater.cs:6
override bool CanPerform()
Definition: ActWater.cs:12
override CursorInfo CursorIcon
Definition: ActWater.cs:8
Definition: ACT.cs:62
static Point TP
Definition: ACT.cs:81
static Chara CC
Definition: ACT.cs:77
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6626
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7186
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4128
int Evalue(int ele)
Definition: Card.cs:2704
void ModExp(string alias, int a)
Definition: Card.cs:2781
int c_charges
Definition: Card.cs:1309
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7304
bool IsSnowTile
Definition: Cell.cs:790
bool IsTopWater
Definition: Cell.cs:708
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9798
override bool IsPCParty
Definition: Chara.cs:633
bool HasCondition(string alias)
Definition: Chara.cs:9970
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6692
bool IsHostile()
Definition: Chara.cs:6873
Definition: ConWet.cs:2
static CursorInfo Hand
Definition: CursorSystem.cs:60
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
List< Point > ListPointsInSquare(Point center, int radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2337
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Point.cs:9
List< Chara > Charas
Definition: Point.cs:340
int Distance(Point p)
Definition: Point.cs:995
Cell cell
Definition: Point.cs:51
static TargetTypeSelfAndNeighbor SelfAndNeighbor
Definition: TargetType.cs:13
static bool ShouldWater(Point p)
Definition: TaskWater.cs:117
Card owner
Definition: Trait.cs:28