2using System.Collections.Generic;
38 if (points.Count == 0)
52 List<Card> list =
new List<Card>();
56 power = power * actref.refThing.material.hardness / 10;
58 string text =
id.ToString();
59 string text2 = (
EClass.
sources.
calc.map.ContainsKey(text) ? text : (
EClass.
sources.
calc.map.ContainsKey(
"Sp" + text) ? (
"Sp" + text) : (text.ToLowerInvariant() +
"_")));
60 foreach (
Point p
in points)
76 text2 =
"SpEarthquake";
84 if (CC.isChara && p.
Equals(CC.pos) && points.Count >= 2)
104 effect.sr.color = elementRef.colorSprite;
106 TrailRenderer componentInChildren = effect.GetComponentInChildren<TrailRenderer>();
107 Color startColor = (componentInChildren.endColor = elementRef.colorSprite);
108 componentInChildren.startColor = startColor;
118 float num3 = 0.06f * (float)CC.pos.Distance(p);
120 TweenUtil.Tween(num3,
null, delegate
132 effect =
Effect.
Get(
"Element/ball_" + ((e.id == 0) ?
"Void" : ((
id ==
EffectId.GravityGun) ?
"Gravity" : e.source.alias.Remove(0, 3))));
135 effect =
Effect.
Get(
"Element/ball_Fire");
137 float startDelay = ((
id ==
EffectId.Meteor) ? 0.1f : 0.04f) * (float)CC.pos.Distance(p);
142 float duration = 0.06f * (float)CC.pos.Distance(p);
144 TweenUtil.Tween(duration,
null, delegate
162 effect.
Play(CC.pos, 0f, p);
169 effect.
Play(p).Flip(p.
x > CC.pos.x);
174 if (CC.IsPCFactionOrMinion && (CC.HasElement(1651) ||
EClass.
pc.
Evalue(1651) >= 2))
181 if (
item.IsPCFactionOrMinion)
186 else if ((e.id != 910 && e.id != 911) || !
item.IsFood || !
item.category.IsChildOf(
"foodstuff"))
244 bool isChara = CC.isChara;
248 num4 = num4 * 100 / (50 + point.Distance(p) * 75);
256 Dice dice =
Dice.
Create(text2, power, CC, (actref.refThing !=
null) ? null : actref.act);
275 num4 = num4 * (int)Mathf.Min(70f + Mathf.Sqrt(CC.Evalue(101)) * 3f, 200f) / 100;
283 num4 = num4 * 100 / (90 + point.Distance(p) * 10);
291 if ((actref.noFriendlyFire && !CC.Chara.IsHostile(c as
Chara)) || (flag && c == CC))
295 if (isChara && points.Count > 1 && c !=
null && c.
isChara && CC.isChara && CC.Chara.IsFriendOrAbove(c.
Chara))
297 int num5 = CC.Evalue(302);
298 if (!CC.IsPC && CC.IsPCFactionOrMinion)
302 if (CC.HasElement(1214))
312 CC.ModExp(302, CC.IsPC ? 10 : 50);
316 num4 =
EClass.
rnd(num4 * 100 / (100 + num5 * 10 + 1));
319 CC.ModExp(302, CC.IsPC ? 20 : 100);
326 if ((CC.HasElement(1214) || (!CC.IsPC && (CC.IsPCFaction || CC.IsPCFactionMinion) &&
EClass.
pc.
HasElement(1214))) &&
EClass.
rnd(5) != 0)
333 if (lang ==
"spell_hand")
335 string[] list2 =
Lang.
GetList(
"attack" + (CC.isChara ? CC.Chara.race.meleeStyle.IsEmpty(
"Touch") :
"Touch"));
336 string @ref =
"_elehand".lang(e.source.GetAltname(2), list2[4]);
337 CC.Say(c.
IsPCParty ?
"cast_hand_ally" :
"cast_hand", CC, c, @ref, c.
IsPCParty ? list2[1] : list2[2]);
341 CC.Say(lang +
"_hit", CC, c, e.
Name.ToLower());
344 Chara chara = (CC.isChara ? CC.Chara : ((actref.refThing !=
null) ?
EClass.
_map.
FindChara(actref.refThing.c_uidRefCard) :
null));
366 num4 = num4 * Act.powerMod / 100;
371 c.
DamageHP(num4, e.id, power * num / 100, attackSource, chara ?? CC);
379 AddCon<ConGravity>(1, power);
380 AddCon<ConBlind>(4, power);
381 AddCon<ConDim>(5, power / 2);
382 AddCon<ConSupress>(3, power / 2);
383 if (actref.refThing !=
null && actref.refThing.id ==
"gun_gravity2")
385 AddCon<ConEntangle>(4, power / 3);
386 AddCon<ConSilence>(4, power / 3);
387 AddCon<ConWeakResEle>(4, power);
388 AddCon<ConNightmare>(4, power);
395 long num6 = num4 * num / 100;
396 Debug.Log(num4 +
" v:" + num6 +
" evalue:" + e.Value +
" power:" + power +
" elepMod:" + num);
402 CC.Chara.mana.Mod((
int)num6);
416 void AddCon<T>(
int rate,
int power) where T :
Condition
428 EffectId.Suicide => CC.LV / 3 + 40,
429 EffectId.Meteor => 50 + power / 20,
430 _ => (actref.refThing !=
null) ? actref.refThing.material.hardness : (30 + power / 20),
432 bool flag5 = EClass._zone.HasLaw && !EClass._zone.IsPCFaction && (CC.IsPC || (
id == EffectId.Explosive && actref.refThing ==
null)) && !(EClass._zone is
Zone_Vernis);
468 p.
ModFire(-20, extinguish:
true);
473 foreach (
Card item3
in list)
489 bool flag2 = isNeg || flag;
509 CC.
Say(
"spell_earthquake", CC, element.
Name.ToLower());
519 DamageEle(CC,
id, power, element, list, actRef,
"spell_earthquake");
528 if (list3.Count == 0)
532 CC.
Say(
"spell_ball", CC, element.
Name.ToLower());
542 DamageEle(CC,
id, power, element, list3, actRef,
"spell_ball");
550 List<Point> list6 =
new List<Point>();
551 list6.Add(tp.
Copy());
557 if (!
DamageEle(CC,
id, power, element, list6, actRef, (
id ==
EffectId.DrainBlood ||
id ==
EffectId.DrainMana) ?
"" : ((
id ==
EffectId.Sword) ?
"spell_sword" :
"spell_hand")))
559 CC.
Say(
"spell_hand_miss", CC, element.
Name.ToLower());
567 List<Point> list7 =
new List<Point>();
568 list7.Add(tp.
Copy());
569 CC.
Say((
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow", CC, element.
Name.ToLower());
575 DamageEle(CC,
id, power, element, list7, actRef, (
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow");
580 string n = actRef.n1;
581 if (!(n ==
"special"))
589 if (!
item.pos.IsSunLit)
591 item.pos.PlayEffect(
"darkwomb3");
601 CC.
Say(
"summon_ally", CC);
611 CC.
Say(
"summon_ally_fail", CC);
614 string id3 = actRef.n1;
619 bool flag4 = actRef.n1 ==
"special";
626 num3 = Mathf.Clamp(power / 100, 1, 5) + ((power >= 100) ?
EClass.
rnd(2) : 0);
633 case "special_force":
644 num3 = Mathf.Clamp(7 + CC.
LV / 100, 4, 20);
653 for (
int j = 0; j < num3; j++)
661 if (point ==
null || !point.
IsValid)
669 CardBlueprint.current.lv = num5;
673 CardBlueprint.current.idEle = text;
740 if (!(n ==
"shadow"))
751 num7 = (CC.IsPCFactionOrMinion ? (CC.LV / 2) : (CC.
LV / 3 * 2));
753 num6 = chara.LV * (100 + power / 10) / 100 + power / 30;
762 num6 = power / 10 + 1;
774 if (!(n ==
"shadow"))
776 if (n ==
"special_force")
783 chara.hp = chara.MaxHP / 2;
788 Chara chara2 = chara;
790 chara2.hostility = hostility2;
792 else if (!(chara.
id ==
"cocoon") && (!(actRef.n1 ==
"monster") || actRef.refThing ==
null))
804 CC.
Say(
"summon_ally_fail", CC);
813 CC.
Say(
"summon_ally_fail", CC);
816 CC.
Say(
"spell_funnel", CC, element.
Name.ToLower());
821 chara3.
SetLv(power / 15);
831 if (list2.Count == 0)
835 CC.
Say(
"spell_breathe", CC, element.
Name.ToLower());
845 DamageEle(CC,
id, power, element, list2, actRef,
"spell_breathe");
872 float radius2 = ((
id ==
EffectId.GravityGun) ? 4f : ((
id ==
EffectId.Rocket) ? 2.8f : ((
id ==
EffectId.Suicide) ? 3.5f : ((
id ==
EffectId.Flare) ? 2.1f : ((float)((
id ==
EffectId.BallBubble) ? 2 : 5))))));
873 if ((
id ==
EffectId.Explosive ||
id ==
EffectId.Rocket) && actRef.refThing !=
null)
875 radius2 = 2 + actRef.refThing.Evalue(666);
892 bool flag5 =
id == EffectId.Explosive ||
id == EffectId.Suicide ||
id ==
EffectId.Rocket;
894 if (list5.Count == 0)
898 cc.
Say((
id ==
EffectId.Suicide) ?
"abSuicide" :
"spell_ball", cc, element.
Name.ToLower());
904 tp.PlayEffect(
"flare");
908 cc.PlaySound((id == EffectId.Flare) ?
"spell_flare" :
"spell_ball");
915 DamageEle(actRef.origin ?? cc,
id, power, element, list5, actRef, (
id ==
EffectId.Suicide) ?
"suicide" :
"spell_ball");
925 if (list4.Count == 0)
929 CC.
Say(
"spell_bolt", CC, element.
Name.ToLower());
939 DamageEle(CC,
id, power, element, list4, actRef,
"spell_bolt");
949 CC.
Say(
"ab" +
id, CC);
953 int id2 = ((
id ==
EffectId.Puddle) ? 4 : ((
id ==
EffectId.Bubble) ? 5 : ((
id ==
EffectId.MistOfDarkness) ? 6 : 7)));
956 if (
id ==
EffectId.Bubble && CC.
id ==
"cancer")
961 for (
int i = 0; i < num; i++)
986 List<Card> list8 = tp.
ListCards().ToList();
988 if (list8.Contains(CC))
994 foreach (
Card item3
in list8)
996 if (tc ==
null || item3 == tc)
998 Proc(
id, power, state, CC, item3, actRef);
999 if (flag2 && item3.
isChara && item3 != CC)
1001 CC.DoHostileAction(item3);
1003 if (actRef.refThing ==
null || !(actRef.refThing.trait is
TraitRod))
1008 if ((uint)(effectId - 200) <= 4u)
1017 CC.SayNothingHappans();
1036 int orgPower = power;
1037 if (blessed || flag)
1045 Point randomPoint = CC.
pos.
GetRandomPoint(2, requireLos:
false, allowChara:
false, allowBlocked:
false, 200);
1048 CC.
Say(
"split_fail", CC);
1053 CC.
Say(
"split", CC);
1061 CC.
Say(
"escape", CC);
1072 CC.
Say(
"burn_mana", CC);
1080 if (list2.Count == 0)
1088 item.PlayEffect(
"vanish");
1100 thing.c_idRefCard =
"dog_mine";
1101 Zone.ignoreSpawnAnime =
true;
1105 case EffectId.LittleSisterMigration:
1112 List<Chara> list3 =
new List<Chara>();
1127 if (list3.Count == 0)
1133 foreach (
Chara item2
in list3)
1138 Msg.
Say(
"little_migration", list3.Count.ToString() ??
"");
1140 EClass.player.stats.sistersDepart += list3.Count;
1151 CC.
Say(
"abMagicMap_curse", CC);
1157 CC.
Say(
"abMagicMap", CC);
1175 Dice dice =
Dice.
Create(
"ActManaAbsorb", power, CC, (actRef.refThing !=
null) ? null : actRef.act);
1176 TC.mana.Mod(dice.
Roll());
1177 TC.PlaySound(
"heal");
1178 TC.PlayEffect(
"heal");
1181 CC.
Say(
"absorbMana", CC);
1193 TC.PlaySound(
"curse3");
1194 TC.PlayEffect(
"curse");
1195 TC.Say(
"forgetItems",
TC);
1196 int num5 = power / 50 + 1 +
EClass.
rnd(3);
1197 List<Thing> source =
TC.things.List((
Thing t) => t.c_IDTState == 0);
1198 for (
int j = 0; j < num5; j++)
1200 source.RandomItem().c_IDTState = 5;
1209 bool armor =
id == EffectId.EnchantArmor ||
id ==
EffectId.EnchantArmorGreat;
1210 bool flag4 =
id == EffectId.EnchantWeaponGreat ||
id ==
EffectId.EnchantArmorGreat;
1220 cc.
Say(
"enc_curse", tc);
1224 int num4 = (flag4 ? 4 : 2) + (blessed ? 1 : 0);
1225 if (tc.
encLV >= num4)
1227 cc.
Say(
"enc_resist", tc);
1237 bool flag6 =
id ==
EffectId.GreaterIdentify;
1287 int num3 = (tc.isWeightChanged ? tc.c_weight : tc.
Thing.
source.weight);
1288 tc.isWeightChanged =
true;
1296 num3 = (int)(0.01f * (
float)num3 * (float)power * 0.75f + 500f);
1297 if (num3 < 0 || num3 > 10000000)
1315 cc.
Say(
"lighten_curse", cc, tc);
1319 num3 = num3 * (100 - power / 10) / 100;
1337 cc.
Say(
"lighten", cc, tc);
1361 cc.
Say(
"reconstruct", cc, tc);
1362 EClass.game.cards.uidNext +=
EClass.
rnd(30);
1366 blesstedState = state
1369 thing3.genLv = num6;
1371 CC.
Pick(thing3, msg:
false);
1378 case EffectId.ChangeMaterialLesser:
1380 case EffectId.ChangeMaterialGreater:
1392 string name = tc.
Name;
1395 bool num =
id ==
EffectId.ChangeMaterialGreater;
1396 bool flag2 =
id ==
EffectId.ChangeMaterialLesser;
1416 num2 = Mathf.Clamp(num2 +
EClass.
rnd(2), 0, 4);
1419 text2 = ((text2 ==
"metal") ?
"leather" :
"metal");
1422 for (
int i = 0; i < 1000; i++)
1433 if ((tc.
id ==
"log" || tc.
id ==
"branch") && tc.material.alias ==
"carbone")
1449 cc.
Say(
"materialChanged", name, row.GetName());
1470 Dialog.
InputName(
"dialogVoidReturn".lang(max.ToString() ??
""), max.ToString() ??
"", delegate(
bool cancel,
string text)
1474 destLv = Mathf.Abs(text.ToInt());
1475 destLv = Mathf.Clamp(destLv, 1, max) * -1;
1477 Debug.Log(destLv +
"/" + zone);
1483 Msg.
Say(
"returnComplete");
1484 EClass.player.uidLastTravelZone = 0;
1486 EClass.player.lastZonePos =
null;
1487 EClass.player.returnInfo =
null;
1514 Msg.
Say(
"returnNowhere");
1527 EClass.player.returnInfo =
null;
1577 Thing t3 =
ThingGen.
Create(
new string[6] {
"330",
"331",
"334",
"335",
"336",
"1142" }.RandomItem());
1583 List<Condition> list9 =
new List<Condition>();
1586 if (GetBlessingDifficulty(condition4) > 0 &&
EClass.
rnd(GetBlessingDifficulty(condition4)) == 0)
1588 list9.Add(condition4);
1591 if (list9.Count == 0)
1596 TC.pos.PlayEffect(
"holyveil");
1597 TC.pos.PlaySound(
"holyveil");
1598 TC.Say(
"unpolluted",
TC);
1631 TC.pos.PlayEffect(
"holyveil");
1632 TC.pos.PlaySound(
"holyveil");
1633 TC.pos.PlaySound(
"atk_eleSound");
1634 TC.conditions.ForeachReverse(delegate(
Condition c)
1641 TC.Say(
"abShutterHex",
TC);
1643 List<Chara> list10 =
TC.pos.ListCharasInRadius(
TC, 4, (
Chara c) => c ==
TC || c.IsHostile(CC));
1644 for (
int m = 0; m < num12; m++)
1646 TweenUtil.Delay((
float)m * 0.1f, delegate
1650 foreach (
Chara item5
in list10)
1655 TrailRenderer componentInChildren = effect.GetComponentInChildren<TrailRenderer>();
1657 componentInChildren.startColor = startColor;
1659 TweenUtil.Delay((
float)m * 0.1f, delegate
1661 effect.
Play(center, 0f, pos);
1663 int num13 =
Dice.
Create(
"SpShutterHex", power, CC, (actRef.refThing !=
null) ? null : actRef.act).Roll();
1672 if (CC.
Dist(
TC) <= 1 || (CC.IsPCFactionOrMinion && TC.IsPCFactionOrMinion &&
TC.isRestrained))
1681 if (point ==
null || !CC.
CanSeeLos(point))
1685 CC.
Say(
"abDraw", CC,
TC);
1692 if (CC.
id ==
"tentacle")
1701 if (nearbyCatToSniff !=
null)
1703 CC.
Sniff(nearbyCatToSniff);
1713 if (
TC.Evalue(426) > 0)
1715 TC.Say((actRef.n1 ==
"money") ?
"abStealNegateMoney" :
"abStealNegate",
TC);
1718 Thing thing5 =
null;
1719 bool flag7 = actRef.n1 ==
"food";
1720 if (actRef.n1 ==
"money")
1732 Func<Thing, bool> func = (
Thing t) =>
true;
1735 func = (
Thing t) => t.IsFood;
1737 List<Thing> list5 =
TC.things.List(delegate(
Thing t)
1743 return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped && t.blessedState == BlessedState.Normal && func(t);
1744 }, onlyAccessible:
true);
1745 if (list5.Count > 0)
1747 thing5 = list5.RandomItem();
1750 thing5 = thing5.
Split(1);
1757 CC.
Say(
"abStealNothing", CC,
TC);
1762 CC.
Pick(thing5, msg:
false);
1764 if (actRef.n1 ==
"food")
1773 CC.
Say(
"abStealEscape", CC);
1774 CC.
Teleport(GetTeleportPos(tc.
pos, 30), silent:
true);
1783 if (CC !=
null && CC !=
TC)
1785 TC.Say(
"curse", CC,
TC);
1787 TC.PlaySound(
"curse3");
1788 TC.PlayEffect(
"curse");
1789 if (
EClass.
rnd(150 +
TC.LUC * 5 +
TC.Evalue(972) * 20) >= power + (flag ? 200 : 0) ||
TC.TryNullifyCurse())
1793 List<Thing> list4 =
TC.things.List(delegate(
Thing t)
1801 if (list4.Count == 0)
1806 Thing thing4 = list4.RandomItem();
1807 TC.Say(
"curse_hit",
TC, thing4);
1815 TC.Say(
"uncurseEQ" + (blessed ?
"_bless" : (flag ?
"_curse" :
"")),
TC);
1816 TC.PlaySound(
"uncurse");
1817 TC.PlayEffect(
"uncurse");
1825 List<Thing> list =
new List<Thing>();
1826 TC.things.Foreach(delegate(
Thing t)
1831 if (t.blessedState == BlessedState.Cursed)
1833 num14 = EClass.rnd(200);
1837 num14 = EClass.rnd(1000);
1843 if (
id ==
EffectId.UncurseEQGreater)
1849 TC.Say(
"uncurseEQ_success", t);
1865 foreach (
Thing item6
in list)
1869 if (success == 0 && fail == 0)
1871 TC.SayNothingHappans();
1875 TC.Say(
"uncurseEQ_fail");
1881 string text3 = actRef.n1;
1886 if (!text4.IsEmpty())
1893 if (!actRef.aliasEle.IsEmpty())
1895 con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
1898 condition2.isPerfume = TC.IsPC && actRef.
isPerfume;
1899 Condition condition3 =
TC.AddCondition(condition2);
1900 if (condition3 !=
null && condition3.
isPerfume)
1902 condition3.value = 3;
1905 if (!text4.IsEmpty())
1917 for (
int k = 0; k < 4 +
EClass.
rnd(2); k++)
1936 bool isPowerful =
TC.IsPowerful;
1937 string n = actRef.n1;
1938 if (n ==
"ConSuffocation")
1940 power = power * 2 / 3;
1943 int num7 = TC.WIL * (isPowerful ? 20 : 5);
1945 if (condition !=
null)
1947 num7 += condition.power * 5;
1951 TC.Say(
"debuff_resist",
TC);
1958 if (!actRef.aliasEle.IsEmpty())
1975 TC.MutateRandom(1, 100, ether:
false, state);
1982 TC.MutateRandom(-1, 100, ether:
false, state);
2002 if (blessed || flag)
2006 Dialog.
InputName(
"dialogWish",
"q", delegate(
bool cancel,
string text)
2023 tc.
Say(
"faith_curse", tc,
faith.Name);
2028 tc.
Say(
"faith_bless", tc,
faith.Name);
2030 tc.
ModExp(306, power * 10);
2031 tc.
ModExp(85, power * 10);
2043 int gender2 = gender
switch
2057 if (blessed && age > 1)
2059 tc.
Say(
"ageDown", tc);
2064 tc.
Say(
"ageUp", tc);
2073 int num8 = ((actRef.refThing !=
null) ? actRef.refThing.GetInt(118) : actRef.refVal);
2079 num8 = EClass.game.seed + tc.
uid;
2083 tc.
Say(
"transBlood", tc);
2085 tc.c_bloodData =
null;
2094 if (!flag && age3 <= 0)
2099 age3 = Mathf.Max(0, age3 * 100 / (flag ? 75 : (blessed ? 400 : 200))) + (flag ? 1 : 0);
2100 tc.
Say(flag ?
"ageUp" :
"ageDown", tc);
2118 tc.
Say(
"eternalYouth2", tc);
2132 tc.
Say(
"eternalYouth1", tc);
2133 tc.c_lockedAge = age2 + 1;
2145 Debug.Log(power +
"/" +
id.ToString() +
"/" + actRef.n1);
2150 if (power < 0 ||
id ==
EffectId.DebuffStats)
2152 power = Mathf.Abs(power);
2166 List<KeyValuePair<int, Chara>> list8 =
EClass.
game.
cards.
globalCharas.Where((KeyValuePair<int, Chara> a) => a.Value.isDead && a.Value.faction ==
EClass.
pc.
faction && !a.Value.isSummon && a.Value.c_wasInPcParty).ToList();
2167 if (
TC.IsPCFaction ||
TC.IsPCFactionMinion)
2169 if (
TC.IsPC && list8.Count == 0)
2173 if (list8.Count > 0)
2175 list8.RandomItem().Value.Chara.GetRevived();
2179 TC.SayNothingHappans();
2188 bool flag10 =
id == EffectId.DamageBody ||
id ==
EffectId.DamageBodyGreat;
2189 bool mind2 =
id == EffectId.DamageMind ||
id ==
EffectId.DamageMindGreat;
2190 int num11 = ((
id == EffectId.DamageBody ||
id ==
EffectId.DamageMind) ? 1 : (4 +
EClass.
rnd(4)));
2199 TC.PlayEffect(
"debuff");
2200 TC.PlaySound(
"debuff");
2202 TC.Say(flag10 ?
"damageBody" :
"damageMind",
TC);
2203 for (
int l = 0; l < num11; l++)
2205 TC.DamageTempElements(power, flag10, mind2,
id !=
EffectId.Weaken);
2218 bool flag8 =
id == EffectId.EnhanceBody ||
id ==
EffectId.EnhanceBodyGreat;
2219 bool mind =
id == EffectId.EnhanceMind ||
id ==
EffectId.EnhanceMindGreat;
2224 TC.Say(flag8 ?
"enhanceBody" :
"enhanceMind",
TC);
2225 TC.PlayEffect(
"buff");
2226 TC.PlaySound(
"buff");
2227 TC.EnhanceTempElements(power, flag8, mind, onlyRenew:
true);
2233 bool flag9 =
id ==
EffectId.RestoreBody;
2239 TC.Say(flag9 ?
"restoreBody" :
"restoreMind",
TC);
2240 TC.PlaySound(
"heal");
2241 TC.PlayEffect(
"heal");
2251 TC.CureHost(
CureType.HealComplete, power, state);
2252 TC.Say(
"heal_heavy",
TC);
2261 int num10 =
Dice.
Create((actRef.act !=
null &&
EClass.
sources.
calc.map.ContainsKey(actRef.act.ID)) ? actRef.act.ID :
"SpHealLight", power, CC, (actRef.refThing !=
null) ?
null : actRef.act).
Roll();
2262 if (actRef.refThing !=
null)
2264 num10 = num10 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
2268 TC.DamageHP(num10 / 2, 919, power);
2271 TC.HealHPHost(num10, (actRef.refThing ==
null &&
id !=
EffectId.JureHeal) ? HealSource.Magic :
HealSource.Item);
2273 TC.Say((power >= 300) ?
"heal_heavy" :
"heal_light",
TC);
2279 TC.Say(
"heal_jure",
TC);
2295 CC.Say(
"removeHex",
TC, item7.
Name.ToLower());
2306 TC.PlaySound(
"heal");
2307 TC.PlayEffect(
"heal");
2310 TC.Say(
"cureCorruption_curse",
TC);
2312 TC.ModCorruption(power);
2316 TC.Say(
"cureCorruption",
TC);
2317 TC.ModCorruption(-power * (blessed ? 150 : 200) / 100);
2325 TC.Say(
"drinkRamune",
TC);
2329 TC.Say(
"drinkGood",
TC);
2335 TC.Say(
"drinkMilk",
TC);
2352 TC.Say(
"drinkWater_dirty",
TC);
2358 TC.Say(
"drinkWater_clear",
TC);
2364 TC.Say(
"drinkWater_dirty",
TC);
2372 if (
TC.HasElement(1211))
2374 TC.Say(
"drinkSaltWater_snail",
TC);
2375 int num9 = ((TC.hp > 10) ? (
TC.hp -
EClass.
rnd(10)) : 10000);
2380 TC.Say(
"drinkSaltWater",
TC);
2385 if (
TC.HasElement(1215))
2387 TC.Say(
"drunk_dwarf",
TC);
2543 if (list7.Count != 0)
2545 Thing thing6 = list7.RandomItem();
2546 TC.Say(
"acid_hit",
TC);
2549 TC.Say(
"acid_nullify", thing6);
2551 else if (thing6.
encLV > -5)
2553 TC.Say(
"acid_rust",
TC, thing6);
2565 TC.DamageHP(power / 5, actRef.idEle, power);
2576 TC.Say(
"drink_acid",
TC);
2577 TC.DamageHP(power / 5, 923, power);
2580 Msg.
Say(
"nothingHappens");
2588 TC.Say(
"love_curse_self",
TC);
2592 TC.Say(
"love_curse", CC,
TC);
2593 TC.ModAffinity(CC, -power / 4, show:
false);
2595 TC.ShowEmo(
Emo.angry);
2599 LoveMiracle(
TC, CC, power,
id, state);
2605 if (
TC.HasElement(1532))
2607 TC.SetMutation(1532);
2611 TC.SetMutation(1533, 1);
2618 if (
TC.HasElement(1533))
2620 TC.SetMutation(1533);
2624 TC.SetMutation(1532, 1);
2627 TC.PlayEffect(
"aura_heaven");
2628 TC.PlaySound(
"godbless");
2631 TC.Say(
"grow_hair_fail",
TC);
2634 TC.Say(
"grow_hair",
TC);
2651 if (!CC.IsHostile(
TC))
2671 Proc(_id, orgPower, _state, cc, tc, _ref1);
2677 tc.
Say(
"eat_poison", tc);
2679 if (power > 100000000)
2683 int num = (int)Mathf.Sqrt(power * 100);
2695 tc.
Say(
"love_ground", tc);
2699 tc.
Say(
"love_chara", c, tc);
2708 tc.
Say(
"item_drop", thing);
2712 Thing c2 = tc.
MakeMilk(effect:
true, 1, addToZone:
true, state);
2713 tc.
Say(
"item_drop", c2);
2717 Thing c3 = tc.
MakeEgg(effect:
true, 1, addToZone:
true, (idEffect ==
EffectId.LovePlus) ? 3 : 20, state);
2718 tc.
Say(
"item_drop", c3);
2732 tc.
Say(
"love_ground", tc);
2736 tc.
Say(
"love_chara", c, tc);
2745 for (
int i = 0; i < 10000; i++)
2761 string netMsg =
GameLang.
Parse(
"wish".langGame(), thirdPerson:
true, name, s);
2763 List<WishItem> list =
new List<WishItem>();
2764 int wishLv = 10 + power / 4;
2765 int wishValue = 5000 + power * 50;
2768 wishLv = wishLv * 150 / 100;
2772 wishLv = wishLv * 150 / 100;
2775 Debug.Log(power +
"/" + wishValue);
2776 string _s = s.ToLower();
2784 if (
item.giftRank >= 2 &&
item.IsValidArtifact(r.
id))
2811 string text = r.
GetName().ToLower();
2812 int score = Compare(_s, text);
2825 if (category.IsChildOf(
"weapon") || category.IsChildOf(
"armor") || category.IsChildOf(
"ranged"))
2827 CardBlueprint.SetRarity(Rarity.Legendary);
2832 bool flag2 = thing.trait is
TraitDeed || thing.rarity >=
Rarity.Artifact || thing.
source._origin ==
"artifact_summon";
2836 thing.c_charges = 0;
2839 num = EClass.rndHalf(wishValue * 3);
2842 num = EClass.rndHalf(wishValue / 500 + 4);
2845 num = EClass.rndHalf(wishValue / 500 + 4);
2848 num = EClass.rndHalf(wishValue / 2000 + 4);
2851 if (!flag2 && thing.trait.CanStack)
2853 int num2 = wishValue;
2855 for (int i = 1; i < 1000; i++)
2857 int num3 = price + i * 2 * (price + 500);
2858 if (num3 > 0 && num2 > num3)
2867 if (price > 2500 && num > 3)
2869 num = 3 + (int)Mathf.Sqrt(num - 3);
2871 if (price > 5000 && num > 2)
2873 num = 2 + (int)Mathf.Sqrt(num - 2) / 2;
2875 if (price > 10000 && num > 1)
2877 num = 1 + Mathf.Min((
int)Mathf.Sqrt(num - 1) / 3, 2);
2884 Debug.Log(_s +
"/" + num +
"/" + score);
2885 if (thing.HasTag(
CTAG.godArtifact))
2902 if (list.Count == 0)
2904 netMsg = netMsg + Lang.space +
"wishFail".langGame();
2912 list.Sort((WishItem a, WishItem b) => b.score - a.score);
2913 foreach (WishItem item2
in list)
2915 Debug.Log(item2.score +
"/" + s +
"/" + item2.n);
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
static void Poison(Chara tc, Chara c, int power)
static void LoveMiracle(Chara tc, Chara c, int power, EffectId idEffect=EffectId.Love, BlessedState? state=null)
static void Proc(EffectId id, int power, BlessedState state, Card cc, Card tc=null, ActRef actRef=default(ActRef))
static void GeneMiracle(Chara tc, Chara c, DNA.Type type)
static Point GetTeleportPos(Point org, int radius=6)
static int Compare(string s, string t)
static void TryDelay(Action a)
static void Proc(EffectId id, Card cc, Card tc=null, int power=100, ActRef actRef=default(ActRef))
static bool DamageEle(Card CC, EffectId id, int power, Element e, List< Point > points, ActRef actref, string lang=null)
static bool Wish(string s, string name, int power, BlessedState state)
static void ProcAt(EffectId id, int power, BlessedState state, Card cc, Card tc, Point tp, bool isNeg, ActRef actRef=default(ActRef))
static EffectIRenderer Throw(Card c, Point p, Thing t, ThrowMethod method=ThrowMethod.Default, float failChance=0f)
virtual int ElementPowerMod
int GetInt(int id, int? defaultInt=null)
void SetInt(int id, int value=0)
void SetRefVal(int a, int b)
virtual ConditionType Type
static int GetColorInt(ref Color matColor, int p)
void SetAge(Chara c, int a)
static void Set(CardBlueprint _bp=null)
GlobalCharaList globalCharas
virtual string GetName(int i)
void Teleport(Point point, bool silent=false, bool force=false)
ElementContainerCard elements
SourceMaterial.Row material
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
virtual int GetPrice(CurrencyType currency=CurrencyType.Money, bool sell=false, PriceType priceType=PriceType.Default, Chara c=null)
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Thing GiveBirth(Thing t, bool effect)
virtual void SetBlessedState(BlessedState s)
bool IsInMutterDistance(int d=10)
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
virtual bool IsAliveInCurrentZone
Thing MakeMilk(bool effect=true, int num=1, bool addToZone=true, BlessedState? state=null)
void DamageHP(long dmg, AttackSource attackSource=AttackSource.None, Card origin=null)
BlessedState blessedState
void ModExp(string alias, int a)
bool HasElement(int ele, bool includeNagative=false)
void Say(string lang, string ref1=null, string ref2=null)
Thing MakeEgg(bool effect=true, int num=1, bool addToZone=true, int fertChance=20, BlessedState? state=null)
SourceMaterial.Row matObj
bool HasZoneStairs(bool includeLocked=true)
void UnqeuipIfTooHeavy(Thing t)
static Chara CreateFromElement(string idEle, int lv=-1, string idFilter="chara")
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
static Chara Create(string id, int lv=-1)
override bool IsAliveInCurrentZone
bool TryNeckHunt(Chara TC, int power, bool harvest=false)
void Cuddle(Chara c, bool headpat=false)
void InstantEat(Thing t=null, bool sound=true)
Condition AddCondition(string id, int p=100, bool force=false)
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Point GetFirstStep(Point newPoint, PathManager.MoveType moveType=PathManager.MoveType.Default)
Chara GetNearbyCatToSniff()
bool CanSeeLos(Card c, int dist=-1)
bool RequestProtection(Chara attacker, Action< Chara > action)
bool HasCondition(string alias)
void SetMainElement(string id, int v=0, bool elemental=false)
bool HasMinion(string id)
override bool IsPCFaction
override bool IsPCPartyMinion
void MakeMinion(Chara _master, MinionType type=MinionType.Default)
override void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
void MakeAlly(bool msg=true)
void AddCooldown(int idEle, int turns=0)
Thing MakeGene(DNA.Type? type=null)
void DoHostileAction(Card _tg, bool immediate=false)
bool TryEquip(Thing t, bool useFav=false)
void SetSummon(int duration)
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
void MoveZone(string alias)
UD_String_Color elementColors
void Kill(bool silent=false)
static Condition Create(string alias, int power=100, Action< Condition > onCreate=null)
static Type GetType(string idMat)
void Generate(Type _type, Chara model=null)
int GetRaw(int offsetHours=0)
static Dialog InputName(string langDetail, string text, Action< bool, string > onClose, InputType inputType=InputType.Default)
static int RollMax(int num, int sides, int bonus=0)
static int Roll(int num, int sides, int bonus=0, Card card=null)
static Dice Create(Element ele, Card c)
static ColorProfile Colors
static void Wait(float a, Card c)
static SourceManager sources
static FactionBranch Branch
static int rndHalf(int a)
static GameSetting setting
static void Create(Point center, int radius, int count, Action< int, Point > onComplete)
static Effect Get(Effect original)
Effect SetStartDelay(float a)
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Effect SetParticleColor(Color c)
List< Element > ListElements(Func< Element, bool > shoudList=null, Comparison< Element > comparison=null)
Dictionary< int, Element > dict
Element ModTempPotential(int ele, int v, int threshMsg=0)
Element ModBase(int ele, int v)
Element SetBase(string alias, int v, int potential=0)
Element GetOrCreateElement(Element ele)
static int[] List_MainAttributes
static int GetId(string alias)
static Element Create(int id, int v=0)
static string Parse(string text, bool thirdPerson, string val1, string val2=null, string val3=null, string val4=null)
bool disableUsermapBenefit
UD_String_ElementRef elements
ReligionManager religions
static string Name(int g)
static bool Has(string id)
static string[] GetList(string id)
static LayerDragGrid CreateEnchant(Chara cc, bool armor, bool superior=false, BlessedState state=BlessedState.Normal, int count=1)
static LayerDragGrid CreateChangeMaterial(Chara cc, Thing consume, SourceMaterial.Row mat, EffectId idEffect, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static LayerDragGrid CreateLighten(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static LayerDragGrid CreateUncurse(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static LayerDragGrid CreateReconstruction(Chara cc, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static LayerDragGrid CreateIdentify(Chara cc, bool superior=false, BlessedState state=BlessedState.Normal, int price=0, int count=1)
static void SetDirty(Thing t)
Point GetRandomSurface(int x, int z, int radius, bool walkable=true, bool allowWater=false)
Chara FindChara(string id)
void TryShatter(Point pos, int ele, int power)
List< Point > ListPointsInArc(Point center, Point to, int radius, float angle)
void Reveal(Point center, int power=100)
void MineObj(Point point, Task task=null, Chara c=null)
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
List< Point > ListPointsInLine(Point center, Point to, int radius)
void SetEffect(int x, int z, CellEffect effect=null)
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
void RevealAll(bool reveal=true)
static bool IsThirdPerson(Card c)
static ThirstPersonInfo thirdPerson1
static string SayNothingHappen()
static string GetName(Card c)
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
static async UniTask< bool > SendChat(string name, string msg, ChatCategory cat, string idLang)
int CountKeyItem(string alias)
SourceMaterial.Row matBlock
List< Card > ListCards(bool includeMasked=false)
Point Set(int _x, int _z)
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
void ModFire(int value, bool extinguish=false)
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
bool Equals(int _x, int _z)
Effect PlayEffect(string id)
Point GetRandomNeighbor()
void Animate(AnimeID id, bool animeBlock=false)
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
ReligionTrickery Trickery
static Thing Reforge(string id, Point pos=null, bool first=true)
void Talk(string idTalk, Card c=null, Card agent=null)
static void ShakeCam(string id="default", float magnitude=1f)
Dictionary< string, CardRow > map
static Dictionary< string, TierList > tierMap
static Spatial Create(string id, Spatial parent, bool register, int x=-99999, int y=-99999, int icon=0)
List< Zone > ListReturnLocations()
static SpawnList Get(string id, Func< SourceChara.Row, bool > func)
static Thing Create(string id, int idMat=-1, int lv=-1)
override CardRow sourceCard
Thing Identify(bool show=true, IDTSource idtSource=IDTSource.Identify)
static void BadEffect(Chara c)
virtual bool CanBeAttacked
static void Reserve(string idStep, Action onBeforePlay=null)
static void Play(string idStep)
bool ContainsKey(TKey key)
bool TryGetValue(TKey key, out TValue value)
virtual string GetNewZoneID(int level)
int CountMinions(Chara c)
Card AddCard(Card t, Point point)