1using System.Collections.Generic;
48 return base.GetTextSmall(c);
88 return base.CanPerform();
93 Act.CurrentAct =
this;
95 Act.CurrentAct =
null;
99 public bool Attack(
float dmgMulti = 1f,
bool maxRoll =
false)
101 Act.CC.combatCount = 10;
120 if (effect !=
null && effect.
id == 6 &&
EClass.
rnd(2) == 0)
127 bool usedWeapon =
false;
128 bool usedTalisman =
false;
181 int num2 = GetWeaponEnc(606, addSelfEnc:
false);
182 int scatter = GetWeaponEnc(607, addSelfEnc:
false);
183 splash = GetWeaponEnc(608, addSelfEnc:
true);
184 chaser = GetWeaponEnc(620, addSelfEnc:
true);
185 flurry = GetWeaponEnc(621, addSelfEnc:
true);
186 frustration = GetWeaponEnc(624, addSelfEnc:
true);
187 int num3 = GetWeaponEnc(622, addSelfEnc:
true);
188 feint = GetWeaponEnc(623, addSelfEnc:
true);
189 knockback = GetWeaponEnc(603, addSelfEnc:
true);
190 mod_talisman = GetWeaponEnc(609, addSelfEnc:
true);
200 num2 = (scatter = (splash = (num3 = 0)));
208 AttackWithFlurry(
Act.
TC,
Act.
TP, 1f, subAttack:
false);
213 if (!
item.Equals(orgPos))
218 AttackWithFlurry(firstChara,
item, 1f, subAttack:
false);
223 else if (scatter > 0)
229 Chara firstChara2 = p.FirstChara;
230 if (firstChara2 != null && firstChara2.IsHostile(Act.CC))
232 AttackWithFlurry(firstChara2, p, Mathf.Min(0.5f + 0.05f * Mathf.Sqrt(scatter), 1f + 0.01f * Mathf.Sqrt(scatter)), subAttack: true);
239 List<Point> list =
new List<Point>();
246 for (
int i = 0; i < 9 && num3 >
EClass.
rnd(10 + (
int)Mathf.Pow(3f, i + 2)); i++)
250 foreach (
Point item2
in list)
260 AttackWithFlurry(item3, item2, 1f, subAttack:
true);
277 for (
int j = 0; j < 10; j++)
279 if (chaser >
EClass.
rnd(4 + (
int)Mathf.Pow(4f, j + 2)))
286 for (
int k = 0; k < num5; k++)
301 if (!flag && frustration > 0 && 10f + 2f * Mathf.Sqrt(frustration) > (
float)
EClass.
rnd(100))
303 AttackProcess.Current.critFury =
true;
305 AttackProcess.Current.critFury =
false;
317 TraitAmmo traitAmmo = ((w.ammoData ==
null) ?
null : (w.ammoData.trait as
TraitAmmo));
329 if (mod_talisman > 0 && Mathf.Min(10f + Mathf.Sqrt(mod_talisman) * 5f, 90f) > (
float)
EClass.
rnd(100))
342 if (w.ammoData !=
null)
344 w.ammoData.Num = w.c_ammo;
358 if (feint > 0 && 10f + 4f * Mathf.Sqrt(feint) > (float)
EClass.
rnd(100))
390 bool flag3 = Act.CC.id ==
"tsunami";
416 void AttackWithFlurry(
Card _tc,
Point _tp,
float mtp,
bool subAttack)
421 for (
int l = 0; l < 10 && flurry >
EClass.
rnd(25 + (
int)Mathf.Pow(5f, l + 2)); l++)
426 for (
int m = 0; m < num7; m++)
440 Attack(_tc, _tp, mtp, subAttack);
443 int GetWeaponEnc(
int ele,
bool addSelfEnc)
static Act Create(int id)
bool Attack(float dmgMulti=1f, bool maxRoll=false)
override CursorInfo GetCursorIcon(Card c)
override bool CanPerform()
override string GetTextSmall(Card c)
override bool CanPressRepeat
override string GetHintText(string str="")
override int PerformDistance
virtual bool UseWeaponDist
override bool ShowMouseHint(Card c)
static bool TryReload(Thing weapon, Thing ammo=null)
void Prepare(Chara _CC, Thing _weapon, Card _TC=null, Point _TP=null, int _attackIndex=0, bool _isThrow=false)
bool Perform(int count, bool hasHit, float dmgMulti=1f, bool maxRoll=false, bool subAttack=false)
static AttackProcess Current
int GetRawDamage(float dmgMulti, bool crit, bool maxRoll)
static int GetWeaponEnc(Chara CC, Thing w, int ele, bool addSelfEnc=false)
void PlayAnime(AnimeID id, bool force)
virtual void SetFirst(bool first, Vector3 pos)
ElementContainerCard elements
void DamageHP(int dmg, AttackSource attackSource=AttackSource.None, Card origin=null)
bool HasElement(int ele, int req=1)
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
virtual int ApplyProtection(int dmg, int mod=100)
virtual bool IsAliveInCurrentZone
void ModExp(string alias, int a)
void Say(string lang, string ref1=null, string ref2=null)
override bool IsAliveInCurrentZone
MoveResult TryMoveFrom(Point p)
Condition AddCondition(string id, int p=100, bool force=false)
bool CanSeeLos(Card c, int dist=-1)
bool HasCondition(string alias)
override void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None)
bool CanInteractTo(Card c)
void DoHostileAction(Card _tg, bool immediate=false)
void RequestProtection(Chara attacker, Action< Chara > action)
override void LookAt(Card c)
static CursorInfo IconMelee
static void Wait(float a, Card c)
int GetSpellExp(Chara c, Element e, int costMod=100)
Element GetElement(string alias)
static void SetDirty(Thing t)
List< Point > ListPointsInLine(Point center, Point to, int radius)
List< Card > ListCards(bool includeMasked=false)
Point Set(int _x, int _z)
void ForeachNeighbor(Action< Point > action, bool diagonal=true)
bool Equals(int _x, int _z)
Effect PlayEffect(string id)
void Animate(AnimeID id, bool animeBlock=false)
virtual bool CanBeAttacked