16            return this.weapon == 
null;
 
   22    public bool IsMartialWeapon
 
   26            return this.weapon != 
null && this.weapon.category.skill == 100;
 
   36            return this.toolRange != 
null && !this.isThrow && !this.toolRange.owner.Thing.isEquipped;
 
   51    public string GetText()
 
   53        string text = this.dNum.ToString() + 
"d" + this.dDim.ToString();
 
   54        text = text + ((this.dBonus >= 0) ? 
"+" : 
"") + this.dBonus.ToString();
 
   55        string @ref = this.IsMartial ? 
"evalHand".lang() : 
"evalWeapon".lang((this.attackIndex + 1).ToString() ?? 
"", 
null, 
null, 
null, 
null);
 
   56        return "attackEval".lang(@ref, text, this.dMulti.ToString(
"F2") ?? 
"", 
this.toHit.ToString() ?? 
"", 
this.penetration.ToString() ?? 
"");
 
   60    public void Prepare(
Chara _CC, 
Thing _weapon, 
Card _TC = 
null, 
Point _TP = 
null, 
int _attackIndex = 0, 
bool _isThrow = 
false)
 
   65        this.isThrow = _isThrow;
 
   66        this.weapon = _weapon;
 
   67        this.ammo = ((_weapon == 
null) ? null : _weapon.ammoData);
 
   68        this.hit = (this.crit = (this.evadePlus = 
false));
 
   69        Thing thing = this.weapon;
 
   70        this.toolRange = (((thing != 
null) ? thing.trait : 
null) as 
TraitToolRange);
 
   71        this.attackType = AttackType.Slash;
 
   72        this.attackStyle = AttackStyle.Default;
 
   76        this.attackIndex = _attackIndex;
 
   77        this.posRangedAnime = this.TP;
 
   78        this.ignoreAnime = (this.ignoreAttackSound = 
false);
 
   83                this.attackStyle = this.CC.body.GetAttackStyle();
 
   85            else if (this.TP != 
null)
 
   87                int num = this.CC.pos.Distance(this.TP);
 
   88                this.distMod = Mathf.Max(115 - 10 * Mathf.Abs(num - 
this.toolRange.BestDist) * 100 / (100 + 
this.weapon.Evalue(605) * 10), 80);
 
   93            bool flag = this.weapon.HasTag(CTAG.throwWeapon) || this.weapon.HasTag(CTAG.throwWeaponEnemy);
 
   94            int num2 = (int)Mathf.Clamp(Mathf.Sqrt((
float)(
this.weapon.SelfWeight + 
this.weapon.ChildrenWeight)) * 3f + 25f + (
float)(flag ? 75 : 0), 10f, 400f + Mathf.Sqrt((
float)
this.CC.STR) * 50f);
 
   95            int num3 = Mathf.Clamp(this.weapon.material.hardness, flag ? 40 : 20, 200);
 
   96            this.weaponSkill = this.CC.elements.GetOrCreateElement(108);
 
   97            this.attackType = AttackType.Blunt;
 
   98            this.dBonus = (this.CC.IsPCParty ? 3 : 7);
 
  100            this.dDim = ((this.CC.IsPCParty ? 0 : this.CC.LV) + this.CC.STR + this.CC.Evalue(108)) * num2 * num3 / 10000 / 2;
 
  102            this.toHitBase = 
EClass.curve(this.CC.DEX / 4 + 
this.CC.STR / 2 + 
this.weaponSkill.Value, 50, 25, 75) + (this.CC.IsPC ? 75 : 250);
 
  103            this.toHitFix = this.CC.HIT + this.weapon.HIT;
 
  104            this.penetration = 25;
 
  106        else if (this.IsMartial || this.IsMartialWeapon)
 
  108            this.weaponSkill = this.CC.elements.GetOrCreateElement(100);
 
  109            this.attackType = (this.CC.race.meleeStyle.IsEmpty() ? ((
EClass.rnd(2) == 0) ? AttackType.Kick : AttackType.Punch) : 
this.CC.race.meleeStyle.ToEnum(
true));
 
  110            this.dBonus = this.CC.DMG + this.CC.encLV + (int)Mathf.Sqrt((
float)(
this.CC.STR / 5 + 
this.weaponSkill.Value / 4));
 
  111            this.dNum = 2 + Mathf.Min(this.weaponSkill.Value / 10, 4);
 
  112            this.dDim = 5 + (int)Mathf.Sqrt((
float)(
this.weaponSkill.Value / 3));
 
  113            this.dMulti = 0.6f + (float)(this.CC.STR / 2 + 
this.weaponSkill.Value / 2 + 
this.CC.Evalue(132) / 2) / 50f;
 
  114            this.dMulti += 0.05f * (float)this.CC.Evalue(1400);
 
  115            this.toHitBase = 
EClass.curve(this.CC.DEX / 3 + 
this.CC.STR / 3 + 
this.weaponSkill.Value, 50, 25, 75) + 50;
 
  116            this.toHitFix = this.CC.HIT;
 
  117            if (this.attackStyle == AttackStyle.Shield)
 
  119                this.toHitBase = this.toHitBase * 75 / 100;
 
  121            this.penetration = Mathf.Clamp(this.weaponSkill.Value / 10 + 5, 5, 20) + this.CC.Evalue(92);
 
  122            if (this.IsMartialWeapon)
 
  124                this.dBonus += this.weapon.DMG;
 
  125                this.dNum += this.weapon.source.offense[0];
 
  126                this.dDim = Mathf.Max(this.dDim / 2 + this.weapon.c_diceDim, 1);
 
  127                this.toHitFix += this.weapon.HIT;
 
  128                this.penetration += this.weapon.Penetration;
 
  129                if (!this.weapon.source.attackType.IsEmpty())
 
  131                    this.attackType = this.weapon.source.attackType.ToEnum(
true);
 
  139                this.weaponSkill = this.CC.elements.GetOrCreateElement(this.toolRange.WeaponSkill);
 
  143                this.weaponSkill = this.CC.elements.GetOrCreateElement(this.weapon.category.skill);
 
  145            if (!this.weapon.source.attackType.IsEmpty())
 
  147                this.attackType = this.weapon.source.attackType.ToEnum(
true);
 
  149            bool flag2 = this.IsCane || this.weapon.Evalue(482) > 0;
 
  152                this.weaponSkill = this.CC.elements.GetOrCreateElement(305);
 
  154            this.dBonus = this.CC.DMG + this.CC.encLV + this.weapon.DMG;
 
  155            this.dNum = this.weapon.source.offense[0];
 
  156            this.dDim = this.weapon.c_diceDim;
 
  157            this.dMulti = 0.6f + (float)(this.weaponSkill.GetParent(
this.CC).Value + 
this.weaponSkill.Value / 2 + 
this.CC.Evalue(flag2 ? 304 : (
this.IsRanged ? 133 : 132))) / 50f;
 
  158            this.dMulti += 0.05f * (float)this.CC.Evalue(
this.IsRanged ? 1404 : 1400);
 
  159            this.toHitBase = 
EClass.curve((this.IsCane ? this.CC.WIL : 
this.CC.DEX) / 4 + 
this.weaponSkill.GetParent(
this.CC).Value / 3 + 
this.weaponSkill.Value, 50, 25, 75) + 50;
 
  160            this.toHitFix = this.CC.HIT + this.weapon.HIT;
 
  161            this.penetration = this.weapon.Penetration + this.CC.Evalue(92);
 
  164                this.toHitBase += 50;
 
  167        if (this.ammo != 
null)
 
  169            this.dNumAmmo = ((this.ammo.source.offense.Length != 0) ? this.ammo.source.offense[0] : 0);
 
  170            this.dDimAmmo = this.ammo.c_diceDim;
 
  171            this.dBonusAmmo = this.ammo.DMG;
 
  172            if (this.dNumAmmo < 1)
 
  176            if (this.dDimAmmo < 1)
 
  180            this.dBonus += this.ammo.DMG;
 
  181            this.toHitFix += this.ammo.HIT;
 
  196        if (this.penetration > 100)
 
  198            this.penetration = 100;
 
  200        if (this.attackStyle == AttackStyle.TwoHand)
 
  202            this.dMulti = this.dMulti * 1.5f + 0.1f * Mathf.Sqrt((
float)this.CC.Evalue(130));
 
  204        this.dMulti = this.dMulti * (float)this.distMod / 100f;
 
  205        this.toHit = this.toHitBase + this.toHitFix;
 
  206        this.toHit = this.toHit * this.distMod / 100;
 
  207        if (this.CC.HasCondition<
ConBane>())
 
  209            this.toHit = this.toHit * 75 / 100;
 
  211        if (this.
TC != 
null && this.CC.HasHigherGround(
this.TC))
 
  213            this.toHit = this.toHit * 120 / 100;
 
  215        if (this.CC.ride != 
null)
 
  217            this.toHit = this.toHit * 100 / (100 + 500 / Mathf.Max(5, 10 + this.CC.EvalueRiding()));
 
  219        if (this.CC.parasite != 
null)
 
  221            this.toHit = this.toHit * 100 / (100 + 1000 / Mathf.Max(5, 10 + this.CC.Evalue(227)));
 
  223        if (this.CC.host != 
null)
 
  225            if (this.CC.host.ride == 
this.CC)
 
  227                this.toHit = this.toHit * 100 / (100 + 1000 / Mathf.Max(5, 10 + this.CC.STR));
 
  229            if (this.CC.host.parasite == 
this.CC)
 
  231                this.toHit = this.toHit * 100 / (100 + 2000 / Mathf.Max(5, 10 + this.CC.DEX));
 
  234        if (this.attackStyle == AttackStyle.TwoHand)
 
  236            this.toHit += 25 + (int)Mathf.Sqrt((
float)(
this.CC.Evalue(130) * 2));
 
  238        else if (this.attackStyle == AttackStyle.TwoWield && 
this.toHit > 0)
 
  240            this.toHit = this.toHit * 100 / (115 + this.attackIndex * 15 + this.attackIndex * Mathf.Clamp(2000 / (20 + this.CC.Evalue(131)), 0, 100));
 
  244            this.toHit /= ((this.IsRanged || this.isThrow) ? 10 : 3);
 
  246        if (this.CC.isConfused || 
this.CC.HasCondition<
ConDim>())
 
  254        this.evasion = 
EClass.curve(this.
TC.PER / 3 + 
this.TC.Evalue(150), 50, 10, 75) + this.TC.DV + 25;
 
  255        if (this.
TC.isChara && 
this.TC.Chara.isBlind)
 
  263        if (this.
TC.isChara && 
this.TC.Chara.HasHigherGround(
this.CC))
 
  265            this.evasion = this.evasion * 120 / 100;
 
  270    public unsafe 
void PlayRangedAnime(
int numFire)
 
  273        CS$<>8__locals1.<>4__this = 
this;
 
  276        AttackProcess.<>c__DisplayClass43_0 CS$<>8__locals2 = CS$<>8__locals1;
 
  278        if ((data = 
EClass.setting.effect.guns.TryGetValue(
this.weapon.id, 
null)) == 
null)
 
  280            data = 
EClass.setting.effect.guns[CS$<>8__locals1.isCane ? 
"cane" : (CS$<>8__locals1.isGun ? 
"gun" : 
"bow")];
 
  282        CS$<>8__locals2.data = data;
 
  283        CS$<>8__locals1.isPCC = (this.CC.IsPCC && this.CC.renderer.hasActor);
 
  284        CS$<>8__locals1.firePos = (CS$<>8__locals1.isPCC ? 
new Vector2(CS$<>8__locals1.data.firePos.x * (
float)((
this.CC.renderer.actor.currentDir == 0 || 
this.CC.renderer.actor.currentDir == 1) ? -1 : 1), CS$<>8__locals1.data.firePos.y) : Vector2.zero);
 
  285        CS$<>8__locals1._CC = this.CC;
 
  286        CS$<>8__locals1._TP = this.posRangedAnime.Copy();
 
  287        CS$<>8__locals1._weapon = this.weapon;
 
  288        CS$<>8__locals1.ignoreSound = this.ignoreAttackSound;
 
  289        for (
int i = 0; i < numFire; i++)
 
  291            float delay = (float)i * CS$<>8__locals1.data.delay;
 
  293            if ((action = CS$<>8__locals1.<>9__0) == 
null)
 
  295                action = (CS$<>8__locals1.<>9__0 = delegate()
 
  297                    if (!
EClass.core.IsGameStarted || !CS$<>8__locals1._CC.IsAliveInCurrentZone)
 
  301                    if (CS$<>8__locals1._weapon.id == 
"gun_rail")
 
  303                        CS$<>8__locals1._CC.PlayEffect(
"laser", 
true, 0f, 
default(Vector3)).GetComponent<
SpriteBasedLaser>().Play(*CS$<>8__locals1._TP.PositionCenter());
 
  307                        Effect effect = 
Effect.Get(
"ranged_arrow")._Play(CS$<>8__locals1._CC.pos, CS$<>8__locals1._CC.isSynced ? CS$<>8__locals1._CC.renderer.position : (*CS$<>8__locals1._CC.pos.Position()), 0f, CS$<>8__locals1._TP, CS$<>8__locals1.data.sprite);
 
  308                        if (CS$<>8__locals1.isCane)
 
  310                            IEnumerable<Element> enumerable = from e in CS$<>8__locals1.<>4__this.toolRange.owner.elements.dict.Values
 
  311                            where e.source.categorySub == 
"eleAttack" 
  313                            if (enumerable.Count<
Element>() > 0)
 
  316                                effect.sr.color = 
EClass.Colors.elementColors[element.source.alias];
 
  320                    if (CS$<>8__locals1.data.eject)
 
  322                        if (!CS$<>8__locals1.ignoreSound)
 
  324                            CS$<>8__locals1._CC.PlaySound(
"bullet_drop", 1f, 
true);
 
  326                        CS$<>8__locals1._CC.PlayEffect(
"bullet", 
true, 0f, 
default(Vector3)).Emit(1);
 
  328                    if (CS$<>8__locals1.isGun)
 
  330                        if (CS$<>8__locals1.isPCC)
 
  332                            CS$<>8__locals1._weapon.PlayEffect(CS$<>8__locals1.data.idEffect.IsEmpty(
"gunfire"), 
true, 0f, CS$<>8__locals1.firePos);
 
  336                            CS$<>8__locals1._CC.PlayEffect(CS$<>8__locals1.data.idEffect.IsEmpty(
"gunfire"), 
true, 0f, 
default(Vector3));
 
  339                    if (!CS$<>8__locals1.ignoreSound)
 
  341                        CS$<>8__locals1._CC.PlaySound(CS$<>8__locals1.data.idSound.IsEmpty(
"attack_gun"), 1f, 
true);
 
  345            TweenUtil.Delay(delay, action);
 
  350    public bool Perform(
int count, 
bool hasHit, 
float dmgMulti = 1f, 
bool maxRoll = 
false)
 
  352        bool flag = this.CC.HasCondition<
ConReload>();
 
  353        this.hit = this.CalcHit();
 
  354        int num = 
Dice.Roll(this.dNum, this.dDim, this.dBonus, this.CC);
 
  355        if (this.ammo != 
null && !flag)
 
  357            num += 
Dice.Roll(this.dNumAmmo, this.dDimAmmo, this.dBonusAmmo, this.CC);
 
  359        if (this.crit || maxRoll)
 
  361            num = 
Dice.RollMax(this.dNum, this.dDim, this.dBonus);
 
  362            if (this.ammo != 
null && !flag)
 
  364                num += 
Dice.RollMax(this.dNumAmmo, this.dDimAmmo, 0);
 
  366            if (this.crit && (this.IsMartial || this.IsMartialWeapon))
 
  368                this.dMulti *= 1.25f;
 
  371        if (this.CC.Evalue(1355) > 0)
 
  374            if (condition != 
null)
 
  376                num += condition.GetDice().Roll();
 
  383        num = (int)(this.dMulti * (
float)num * dmgMulti);
 
  384        if (this.IsRanged && count >= this.numFireWithoutDamageLoss)
 
  386            num = num * 100 / (100 + (count - this.numFireWithoutDamageLoss + 1) * 30);
 
  388        if (this.CC.isRestrained)
 
  392        List<Element> list = 
new List<Element>();
 
  393        int num2 = this.CC.Evalue(91);
 
  395        if (this.weapon != 
null)
 
  397            list = this.weapon.elements.dict.Values.ToList<
Element>();
 
  398            if (this.ammo != 
null && !flag)
 
  400                list = list.Concat(this.ammo.elements.dict.Values).ToList<
Element>();
 
  402            if (this.IsRanged || this.isThrow)
 
  404                num2 += this.weapon.Evalue(91);
 
  406            num3 += this.weapon.Evalue(603);
 
  408        else if (this.CC.id == 
"rabbit_vopal")
 
  410            list.Add(
Element.Create(6650, 100));
 
  413        if (((tc != 
null) ? tc.Chara : 
null) != 
null)
 
  417            CS$<>8__locals1.bane = this.CC.Evalue(468);
 
  418            this.<Perform>g__AddBane|44_5(race.IsUndead, 461, ref CS$<>8__locals1);
 
  419            this.<Perform>g__AddBane|44_5(race.IsAnimal, 463, ref CS$<>8__locals1);
 
  420            this.<Perform>g__AddBane|44_5(race.IsHuman, 464, ref CS$<>8__locals1);
 
  421            this.<Perform>g__AddBane|44_5(race.IsDragon, 460, ref CS$<>8__locals1);
 
  422            this.<Perform>g__AddBane|44_5(race.IsGod, 466, ref CS$<>8__locals1);
 
  423            this.<Perform>g__AddBane|44_5(race.IsMachine, 465, ref CS$<>8__locals1);
 
  424            this.<Perform>g__AddBane|44_5(race.IsFish, 467, ref CS$<>8__locals1);
 
  425            this.<Perform>g__AddBane|44_5(race.IsFairy, 462, ref CS$<>8__locals1);
 
  426            if (CS$<>8__locals1.bane != 0)
 
  428                num = num * (100 + CS$<>8__locals1.bane * 3) / 100;
 
  431        if (this.CC.IsPCFaction)
 
  433            foreach (
Element item 
in EClass.pc.faction.charaElements.dict.Values)
 
  438        if (this.hit && num2 > 
EClass.rnd(100))
 
  440            this.CC.Say(
"vopal", 
null, 
null);
 
  441            this.penetration = 100;
 
  443        if (this.crit && this.CC.IsPC)
 
  445            this.CC.Say(
"critical", 
null, 
null);
 
  446            this.CC.PlaySound(
"critical", 1f, 
true);
 
  448        if (this.CC.isSynced || (
this.TC != 
null && 
this.TC.isSynced))
 
  450            if (this.toolRange != 
null && (!this.IsRanged || count == 0) && !flag && !this.ignoreAnime)
 
  452                this.PlayRangedAnime(this.IsRanged ? this.numFire : 1);
 
  454            if (this.hit && this.
TC != 
null && !hasHit)
 
  456                this.<Perform>g__PlayHitEffect|44_4();
 
  461            this.CC.Say(this.IsRanged ? 
"attack_air_range" : 
"attack_air", this.CC, 
null, 
null);
 
  468                if (this.CC.IsPCParty)
 
  470                    this.CC.Say(this.evadePlus ? 
"evadePlus2" : 
"evade2", this.CC, this.
TC, 
null, 
null);
 
  474                    this.
TC.Say(this.evadePlus ? 
"evadePlus" : 
"evade", this.
TC, this.CC, 
null, 
null);
 
  476                this.<Perform>g__ModExpDef|44_2(150, 90);
 
  477                this.<Perform>g__ModExpDef|44_2(151, 90);
 
  479            this.<Perform>g__Proc|44_0(list);
 
  484            Msg.SetColor(
"attack_pc");
 
  485            EClass.pc.Say(
"attackMeleeToPC", this.CC, this.
TC, this.GetAttackText(this.attackType, 3), 
null);
 
  489            this.CC.Say(
"attackMelee", this.CC, this.
TC, this.GetAttackText(this.attackType, 0), 
null);
 
  491        bool showEffect = 
true;
 
  496        if (this.weapon != 
null)
 
  498            foreach (
Element element 
in this.weapon.elements.dict.Values)
 
  500                if (element.source.categorySub == 
"eleConvert")
 
  502                    num4 = 
EClass.sources.elements.alias[element.source.aliasRef].id;
 
  503                    num5 = 50 + element.Value * 2;
 
  504                    num6 = Mathf.Min(element.Value, 100);
 
  513                conWeapon = this.CC.GetCondition<
ConWeapon>();
 
  514                num4 = conWeapon.sourceElement.id;
 
  515                num5 = conWeapon.power / 2;
 
  516                num6 = 40 + (int)Mathf.Min(MathF.Sqrt((
float)conWeapon.power), 80f);
 
  518            if (conWeapon == 
null && this.weapon == 
null && (this.CC.MainElement != 
Element.Void || 
this.CC.HasElement(1565, 1)))
 
  520                num4 = (this.CC.HasElement(1565, 1) ? 915 : this.CC.MainElement.id);
 
  521                num5 = this.CC.Power / 3 + 
EClass.rnd(this.CC.Power / 2);
 
  522                if (this.CC.MainElement != 
Element.Void)
 
  524                    num5 += this.CC.MainElement.Value;
 
  529            if (conWeapon == 
null && this.weapon != 
null && this.weapon.trait is 
TraitToolRangeCane)
 
  531                IEnumerable<Element> enumerable = from e in this.weapon.elements.dict.Values
 
  532                where e.source.categorySub == 
"eleAttack" 
  534                if (enumerable.Count<
Element>() > 0)
 
  536                    num4 = enumerable.RandomItem<
Element>().
id;
 
  564        int num8 = num * num6 / 100;
 
  566        int num9 = num * this.penetration / 100;
 
  568        num = this.
TC.ApplyProtection(num, 100) + num9 + num8;
 
  569        this.
TC.DamageHP(num, num4, num5, (this.IsRanged || this.isThrow) ? AttackSource.Range : AttackSource.Melee, 
this.CC, showEffect);
 
  570        if (conWeapon != 
null)
 
  572            conWeapon.Mod(-1, 
false);
 
  574        bool flag2 = this.IsCane || (this.weapon != 
null && this.weapon.Evalue(482) > 0);
 
  575        int attackStyleElement = this.CC.body.GetAttackStyleElement(this.attackStyle);
 
  576        int mod = 100 / (count + 1);
 
  577        if (!this.IsRanged || count == 0)
 
  579            this.<Perform>g__ModExpAtk|44_3(this.weaponSkill.id, mod);
 
  580            this.<Perform>g__ModExpAtk|44_3(flag2 ? 304 : (this.IsRanged ? 133 : 132), mod);
 
  584            this.<Perform>g__ModExpAtk|44_3(134, 50);
 
  586        if (count == 0 && attackStyleElement != 0)
 
  588            this.<Perform>g__ModExpAtk|44_3(attackStyleElement, 100);
 
  590        if (!this.CC.IsAliveInCurrentZone || !
this.TC.IsAliveInCurrentZone)
 
  594        if (
EClass.rnd(8) == 0 && 
this.TC.isChara && 
this.CC.HasElement(1219, 1))
 
  596            this.CC.Say(
"abCrab", this.CC, this.
TC, 
null, 
null);
 
  602            foreach (
Element element2 
in list)
 
  604                if (!this.
TC.IsAliveInCurrentZone)
 
  608                if (element2.source.categorySub == 
"eleAttack")
 
  611                    int dmg = 
EClass.rnd(num * (100 + element2.Value * 10) / 500 + 5);
 
  612                    if (conWeapon == 
null && this.weapon != 
null && this.weapon.trait is 
TraitToolRangeCane)
 
  616                    if (num10 >= 
EClass.rnd(100))
 
  618                        this.
TC.DamageHP(dmg, element2.id, 
this.isThrow ? (100 + element2.Value * 5) : (30 + element2.Value), AttackSource.WeaponEnchant, 
this.CC, 
true);
 
  622            this.<Perform>g__Proc|44_0(list);
 
  624        if (!this.CC.IsAliveInCurrentZone || !
this.TC.IsAliveInCurrentZone)
 
  628        if (!this.IsRanged && this.attackStyle == AttackStyle.Shield)
 
  630            int num11 = this.CC.Evalue(123);
 
  631            if (this.CC.elements.ValueWithoutLink(123) >= 10 && Mathf.Clamp(Mathf.Sqrt((
float)num11) - 2f, 8f, 12f) > (
float)
EClass.rnd(100))
 
  633                num = num7 * Mathf.Min(50 + num11, 200) / 100;
 
  634                num = this.
TC.ApplyProtection(num, 100);
 
  635                Debug.Log(
"Bash:" + num.ToString() + 
"/" + num7.ToString());
 
  636                this.CC.PlaySound(
"shield_bash", 1f, 
true);
 
  637                this.CC.Say(
"shield_bash", this.CC, this.
TC, 
null, 
null);
 
  638                this.
TC.DamageHP(num, AttackSource.None, 
this.CC);
 
  639                if (this.
TC.IsAliveInCurrentZone && 
this.TC.isChara)
 
  643                        this.
TC.Chara.AddCondition<
ConDim>(50 + (int)Mathf.Sqrt((
float)num11) * 10, 
false);
 
  649        if (!this.CC.IsAliveInCurrentZone || !
this.TC.IsAliveInCurrentZone)
 
  653        if (this.
TC.isChara && num3 > 0 && num3 * 2 + 15 > 
EClass.rnd(100) && !
this.TC.isRestrained && 
this.TC.Chara.TryMoveFrom(
this.CC.pos) == 
Card.MoveResult.Success)
 
  655            this.
TC.pos.PlayEffect(
"vanish");
 
  656            this.
TC.PlaySound(
"push", 1.5f, 
true);
 
  669    private bool EvadePlus()
 
  671        this.evadePlus = 
true;
 
  676    public bool CalcHit()
 
  684            if (this.
TC.IsDeadOrSleeping)
 
  688            int num = this.
TC.Evalue(151);
 
  689            if (num != 0 && this.toHit < num * 10)
 
  691                int num2 = this.evasion * 100 / Mathf.Clamp(this.toHit, 1, this.toHit);
 
  692                if (num2 > 300 && 
EClass.rnd(num + 250) > 100)
 
  694                    return this.EvadePlus();
 
  696                if (num2 > 200 && 
EClass.rnd(num + 250) > 150)
 
  698                    return this.EvadePlus();
 
  700                if (num2 > 150 && 
EClass.rnd(num + 250) > 200)
 
  702                    return this.EvadePlus();
 
  705            if (this.
TC.Evalue(57) > 
EClass.rnd(100))
 
  707                return this.EvadePlus();
 
  722        if (this.evasion < 1)
 
  726        if (
EClass.rnd(
this.toHit) < 
EClass.rnd(
this.evasion * 3 / 2))
 
  730        if (
EClass.rnd(5000) < 
this.CC.Evalue(73) + 50)
 
  734        if ((
float)this.CC.Evalue(90) + Mathf.Sqrt((
float)
this.CC.Evalue(134)) > (
float)
EClass.rnd(200))
 
  738        if (this.CC.Evalue(1420) > 0)
 
  740            int num3 = Mathf.Min(100, 100 - this.CC.hp * 100 / 
this.CC.MaxHP);
 
  741            if (num3 >= 50 && num3 * num3 * num3 * num3 / 3 > 
EClass.rnd(100000000))
 
  750    public string GetAttackText(AttackType type, 
int id)
 
  752        return Lang.GetList(
"attack" + type.ToString())[id];
 
  757    private void <Perform>g__Proc|44_0(List<Element> list)
 
  763        foreach (
Element element 
in list)
 
  767                int value = element.Value;
 
  768                int power = 100 + element.Value * 10;
 
  769                if (value >= 
EClass.rnd(100))
 
  772                    Card card = act.TargetType.CanSelectSelf ? this.CC : this.
TC;
 
  773                    string text = (element.source.proc.Length >= 2) ? element.source.proc[1] : 
"";
 
  774                    if ((!(act.source.abilityType.TryGet(0, -1) == 
"buff") || !
this.CC.HasCondition(text)) && card.IsAliveInCurrentZone)
 
  776                        if (act.TargetType.CanTargetGround)
 
  778                            ActEffect.ProcAt(element.source.proc[0].ToEnum(
true), power, BlessedState.Normal, 
this.CC, card, card.pos, 
false, 
new ActRef 
  781                                aliasEle = element.source.aliasRef,
 
  782                                noFriendlyFire = true
 
  787                            ActEffect.ProcAt(element.source.proc[0].ToEnum(
true), power, BlessedState.Normal, 
this.CC, card, 
this.CC.pos, 
false, 
new ActRef 
  790                                aliasEle = element.source.aliasRef,
 
  791                                noFriendlyFire = true
 
  802    private bool <Perform>g__IgnoreExp|44_1()
 
  804        return this.CC.HasEditorTag(EditorTag.Invulnerable) || this.CC.HasEditorTag(EditorTag.InvulnerableToMobs) || this.
TC.HasEditorTag(EditorTag.Invulnerable) || this.
TC.HasEditorTag(EditorTag.InvulnerableToMobs);
 
  809    private void <Perform>g__ModExpDef|44_2(
int ele, 
int mod)
 
  811        if (this.<Perform>g__IgnoreExp|44_1())
 
  815        if (this.CC.isCopy && 
EClass.rnd(10) != 0)
 
  819        int num = (Mathf.Clamp((this.CC.LV + 10 - 
this.TC.elements.ValueWithoutLink(ele)) / 2, 1, 10) + Mathf.Min(
this.CC.LV / 10, 10)) * mod / 100;
 
  820        num = Mathf.Min(num, this.
TC.isRestrained ? 10 : 200);
 
  821        if (this.
TC == this.CC)
 
  825        if (!this.
TC.IsPC && !
this.TC.isRestrained && !
this.TC.HasHost)
 
  831            this.
TC.ModExp(ele, num + 
EClass.rnd(num / 2 + 1));
 
  837    private void <Perform>g__ModExpAtk|44_3(
int ele, 
int mod)
 
  839        if (this.<Perform>g__IgnoreExp|44_1())
 
  843        if (this.
TC.isCopy && 
EClass.rnd(10) != 0)
 
  847        int num = (Mathf.Clamp((this.
TC.LV + 10 - 
this.CC.elements.ValueWithoutLink(ele)) / 2, 1, 10) + Mathf.Min(
this.TC.LV / 10, 10)) * mod / 100;
 
  848        num = Mathf.Min(num, 200);
 
  849        if (this.
TC == this.CC)
 
  855            this.CC.ModExp(ele, num + 
EClass.rnd(num / 2 + 1));
 
  861    private void <Perform>g__AddBane|44_5(
bool valid, 
int idEle, ref 
AttackProcess.<>c__DisplayClass44_0 A_3)
 
  867        A_3.bane += this.CC.Evalue(idEle);
 
  872    private void <Perform>g__PlayHitEffect|44_4()
 
  874        string id = 
"hit_default";
 
  875        string id2 = 
"hit_default";
 
  876        switch (this.attackType)
 
  878        case AttackType.Slash:
 
  882        case AttackType.Blunt:
 
  883        case AttackType.Punch:
 
  884        case AttackType.Kick:
 
  887        case AttackType.Cane:
 
  891        case AttackType.Claw:
 
  892        case AttackType.Bite:
 
  896        case AttackType.Spore:
 
  903            this.
TC.PlayEffect(id2, 
true, 0f, 
default(Vector3)).SetScale(this.crit ? 1.25f : 0.75f);
 
  905        this.CC.PlaySound(
id, 1f, 
true);
 
  924    public int toHitBase;
 
  933    public int penetration;
 
  939    public int attackIndex;
 
  948    public int dBonusAmmo;
 
  954    public int numFireWithoutDamageLoss;
 
  966    public bool evadePlus;
 
  972    public bool ignoreAnime;
 
  975    public bool ignoreAttackSound;
 
  987    public Point posRangedAnime;
 
 1002    public AttackType attackType;
 
 1005    public AttackStyle attackStyle;