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;
505 if (list7.Count == 0)
509 CC.
Say(
"spell_earthquake", CC, element.
Name.ToLower());
519 DamageEle(CC,
id, power, element, list7, actRef,
"spell_earthquake");
532 CC.
Say(
"spell_ball", CC, element.
Name.ToLower());
542 DamageEle(CC,
id, power, element, list, 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> list3 =
new List<Point>();
568 list3.Add(tp.
Copy());
569 CC.
Say((
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow", CC, element.
Name.ToLower());
575 DamageEle(CC,
id, power, element, list3, actRef, (
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow");
580 if (actRef.n1 ==
"special")
585 CC.
Say(
"summon_ally", CC);
588 CC.
Say(
"summon_ally_fail", CC);
591 string id3 = actRef.n1;
596 bool flag4 = actRef.n1 ==
"special";
603 num3 = Mathf.Clamp(power / 100, 1, 5) + ((power >= 100) ?
EClass.
rnd(2) : 0);
610 case "special_force":
621 num3 = Mathf.Clamp(7 + CC.
LV / 100, 4, 20);
626 for (
int j = 0; j < num3; j++)
633 if (point ==
null || !point.
IsValid)
641 CardBlueprint.current.lv = num5;
645 CardBlueprint.current.idEle = text;
709 string n = actRef.n1;
710 if (!(n ==
"shadow"))
712 if (!(n ==
"special"))
717 num7 = (CC.IsPCFactionOrMinion ? (CC.LV / 2) : (CC.
LV / 3 * 2));
719 num6 = chara.LV * (100 + power / 10) / 100 + power / 30;
728 num6 = power / 10 + 1;
740 if (!(n ==
"shadow"))
742 if (n ==
"special_force")
749 chara.hp = chara.MaxHP / 2;
754 Chara chara2 = chara;
756 chara2.hostility = hostility2;
758 else if (!(actRef.n1 ==
"monster") || actRef.refThing ==
null)
770 CC.
Say(
"summon_ally_fail", CC);
779 CC.
Say(
"summon_ally_fail", CC);
782 CC.
Say(
"spell_funnel", CC, element.
Name.ToLower());
787 chara3.
SetLv(power / 15);
797 if (list2.Count == 0)
801 CC.
Say(
"spell_breathe", CC, element.
Name.ToLower());
811 DamageEle(CC,
id, power, element, list2, actRef,
"spell_breathe");
838 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))))));
839 if ((
id ==
EffectId.Explosive ||
id ==
EffectId.Rocket) && actRef.refThing !=
null)
841 radius2 = 2 + actRef.refThing.Evalue(666);
858 bool flag5 =
id == EffectId.Explosive ||
id == EffectId.Suicide ||
id ==
EffectId.Rocket;
860 if (list5.Count == 0)
864 cc.
Say((
id ==
EffectId.Suicide) ?
"abSuicide" :
"spell_ball", cc, element.
Name.ToLower());
870 tp.PlayEffect(
"flare");
874 cc.PlaySound((id == EffectId.Flare) ?
"spell_flare" :
"spell_ball");
881 DamageEle(actRef.origin ?? cc,
id, power, element, list5, actRef, (
id ==
EffectId.Suicide) ?
"suicide" :
"spell_ball");
891 if (list4.Count == 0)
895 CC.
Say(
"spell_bolt", CC, element.
Name.ToLower());
905 DamageEle(CC,
id, power, element, list4, actRef,
"spell_bolt");
915 CC.
Say(
"ab" +
id, CC);
919 int id2 = ((
id ==
EffectId.Puddle) ? 4 : ((
id ==
EffectId.Bubble) ? 5 : ((
id ==
EffectId.MistOfDarkness) ? 6 : 7)));
922 if (
id ==
EffectId.Bubble && CC.
id ==
"cancer")
927 for (
int i = 0; i < num; i++)
952 List<Card> list8 = tp.
ListCards().ToList();
954 if (list8.Contains(CC))
960 foreach (
Card item2
in list8)
962 if (tc ==
null || item2 == tc)
964 Proc(
id, power, state, CC, item2, actRef);
965 if (flag2 && item2.
isChara && item2 != CC)
967 CC.DoHostileAction(item2);
969 if (actRef.refThing ==
null || !(actRef.refThing.trait is
TraitRod))
974 if ((uint)(effectId - 200) <= 4u)
983 CC.SayNothingHappans();
1002 int orgPower = power;
1003 if (blessed || flag)
1011 Point randomPoint = CC.
pos.
GetRandomPoint(2, requireLos:
false, allowChara:
false, allowBlocked:
false, 200);
1014 CC.
Say(
"split_fail", CC);
1019 CC.
Say(
"split", CC);
1027 CC.
Say(
"escape", CC);
1038 CC.
Say(
"burn_mana", CC);
1046 if (list2.Count == 0)
1054 item.PlayEffect(
"vanish");
1066 thing.c_idRefCard =
"dog_mine";
1067 Zone.ignoreSpawnAnime =
true;
1071 case EffectId.LittleSisterMigration:
1078 List<Chara> list3 =
new List<Chara>();
1093 if (list3.Count == 0)
1099 foreach (
Chara item2
in list3)
1104 Msg.
Say(
"little_migration", list3.Count.ToString() ??
"");
1106 EClass.player.stats.sistersDepart += list3.Count;
1117 CC.
Say(
"abMagicMap_curse", CC);
1123 CC.
Say(
"abMagicMap", CC);
1141 Dice dice =
Dice.
Create(
"ActManaAbsorb", power, CC, (actRef.refThing !=
null) ? null : actRef.act);
1142 TC.mana.Mod(dice.
Roll());
1143 TC.PlaySound(
"heal");
1144 TC.PlayEffect(
"heal");
1147 CC.
Say(
"absorbMana", CC);
1159 TC.PlaySound(
"curse3");
1160 TC.PlayEffect(
"curse");
1161 TC.Say(
"forgetItems",
TC);
1162 int num5 = power / 50 + 1 +
EClass.
rnd(3);
1163 List<Thing> source =
TC.things.List((
Thing t) => t.c_IDTState == 0);
1164 for (
int j = 0; j < num5; j++)
1166 source.RandomItem().c_IDTState = 5;
1175 bool armor =
id == EffectId.EnchantArmor ||
id ==
EffectId.EnchantArmorGreat;
1176 bool flag4 =
id == EffectId.EnchantWeaponGreat ||
id ==
EffectId.EnchantArmorGreat;
1186 cc.
Say(
"enc_curse", tc);
1190 int num4 = (flag4 ? 4 : 2) + (blessed ? 1 : 0);
1191 if (tc.
encLV >= num4)
1193 cc.
Say(
"enc_resist", tc);
1203 bool flag6 =
id ==
EffectId.GreaterIdentify;
1253 int num3 = (tc.isWeightChanged ? tc.c_weight : tc.
Thing.
source.weight);
1254 tc.isWeightChanged =
true;
1262 num3 = (int)(0.01f * (
float)num3 * (float)power * 0.75f + 500f);
1263 if (num3 < 0 || num3 > 10000000)
1281 cc.
Say(
"lighten_curse", cc, tc);
1285 num3 = num3 * (100 - power / 10) / 100;
1303 cc.
Say(
"lighten", cc, tc);
1327 cc.
Say(
"reconstruct", cc, tc);
1328 EClass.game.cards.uidNext +=
EClass.
rnd(30);
1332 blesstedState = state
1335 thing3.genLv = num6;
1337 CC.
Pick(thing3, msg:
false);
1344 case EffectId.ChangeMaterialLesser:
1346 case EffectId.ChangeMaterialGreater:
1358 string name = tc.
Name;
1361 bool num =
id ==
EffectId.ChangeMaterialGreater;
1362 bool flag2 =
id ==
EffectId.ChangeMaterialLesser;
1382 num2 = Mathf.Clamp(num2 +
EClass.
rnd(2), 0, 4);
1385 text2 = ((text2 ==
"metal") ?
"leather" :
"metal");
1388 for (
int i = 0; i < 1000; i++)
1399 if ((tc.
id ==
"log" || tc.
id ==
"branch") && tc.material.alias ==
"carbone")
1415 cc.
Say(
"materialChanged", name, row.GetName());
1436 Dialog.
InputName(
"dialogVoidReturn".lang(max.ToString() ??
""), max.ToString() ??
"", delegate(
bool cancel,
string text)
1440 destLv = Mathf.Abs(text.ToInt());
1441 destLv = Mathf.Clamp(destLv, 1, max) * -1;
1443 Debug.Log(destLv +
"/" + zone);
1449 Msg.
Say(
"returnComplete");
1450 EClass.player.uidLastTravelZone = 0;
1452 EClass.player.lastZonePos =
null;
1453 EClass.player.returnInfo =
null;
1480 Msg.
Say(
"returnNowhere");
1493 EClass.player.returnInfo =
null;
1543 Thing t3 =
ThingGen.
Create(
new string[6] {
"330",
"331",
"334",
"335",
"336",
"1142" }.RandomItem());
1549 List<Condition> list10 =
new List<Condition>();
1552 if (GetBlessingDifficulty(condition4) > 0 &&
EClass.
rnd(GetBlessingDifficulty(condition4)) == 0)
1554 list10.Add(condition4);
1557 if (list10.Count == 0)
1562 TC.pos.PlayEffect(
"holyveil");
1563 TC.pos.PlaySound(
"holyveil");
1564 TC.Say(
"unpolluted",
TC);
1597 TC.pos.PlayEffect(
"holyveil");
1598 TC.pos.PlaySound(
"holyveil");
1599 TC.pos.PlaySound(
"atk_eleSound");
1600 TC.conditions.ForeachReverse(delegate(
Condition c)
1607 TC.Say(
"abShutterHex",
TC);
1609 List<Chara> list5 =
TC.pos.ListCharasInRadius(
TC, 4, (
Chara c) => c ==
TC || c.IsHostile(CC));
1610 for (
int l = 0; l < num8; l++)
1612 TweenUtil.Delay((
float)l * 0.1f, delegate
1616 foreach (
Chara item5
in list5)
1621 TrailRenderer componentInChildren = effect.GetComponentInChildren<TrailRenderer>();
1623 componentInChildren.startColor = startColor;
1625 TweenUtil.Delay((
float)l * 0.1f, delegate
1627 effect.
Play(center, 0f, pos);
1629 int num9 =
Dice.
Create(
"SpShutterHex", power, CC, (actRef.refThing !=
null) ? null : actRef.act).Roll();
1638 if (CC.
Dist(
TC) <= 1 || (CC.IsPCFactionOrMinion && TC.IsPCFactionOrMinion &&
TC.isRestrained))
1647 if (point ==
null || !CC.
CanSeeLos(point))
1651 CC.
Say(
"abDraw", CC,
TC);
1658 if (CC.
id ==
"tentacle")
1667 if (nearbyCatToSniff !=
null)
1669 CC.
Sniff(nearbyCatToSniff);
1679 if (
TC.Evalue(426) > 0)
1681 TC.Say((actRef.n1 ==
"money") ?
"abStealNegateMoney" :
"abStealNegate",
TC);
1684 Thing thing4 =
null;
1685 bool flag9 = actRef.n1 ==
"food";
1686 if (actRef.n1 ==
"money")
1698 Func<Thing, bool> func = (
Thing t) =>
true;
1701 func = (
Thing t) => t.IsFood;
1703 List<Thing> list6 =
TC.things.List(delegate(
Thing t)
1709 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);
1710 }, onlyAccessible:
true);
1711 if (list6.Count > 0)
1713 thing4 = list6.RandomItem();
1716 thing4 = thing4.
Split(1);
1723 CC.
Say(
"abStealNothing", CC,
TC);
1728 CC.
Pick(thing4, msg:
false);
1730 if (actRef.n1 ==
"food")
1739 CC.
Say(
"abStealEscape", CC);
1740 CC.
Teleport(GetTeleportPos(tc.
pos, 30), silent:
true);
1749 if (CC !=
null && CC !=
TC)
1751 TC.Say(
"curse", CC,
TC);
1753 TC.PlaySound(
"curse3");
1754 TC.PlayEffect(
"curse");
1755 if (
EClass.
rnd(150 +
TC.LUC * 5 +
TC.Evalue(972) * 20) >= power + (flag ? 200 : 0) ||
TC.TryNullifyCurse())
1759 List<Thing> list9 =
TC.things.List(delegate(
Thing t)
1767 if (list9.Count == 0)
1772 Thing thing6 = list9.RandomItem();
1773 TC.Say(
"curse_hit",
TC, thing6);
1781 TC.Say(
"uncurseEQ" + (blessed ?
"_bless" : (flag ?
"_curse" :
"")),
TC);
1782 TC.PlaySound(
"uncurse");
1783 TC.PlayEffect(
"uncurse");
1791 List<Thing> list =
new List<Thing>();
1792 TC.things.Foreach(delegate(
Thing t)
1797 if (t.blessedState == BlessedState.Cursed)
1799 num13 = EClass.rnd(200);
1803 num13 = EClass.rnd(1000);
1809 if (
id ==
EffectId.UncurseEQGreater)
1815 TC.Say(
"uncurseEQ_success", t);
1831 foreach (
Thing item6
in list)
1835 if (success == 0 && fail == 0)
1837 TC.SayNothingHappans();
1841 TC.Say(
"uncurseEQ_fail");
1847 string text3 = actRef.n1;
1852 if (!text4.IsEmpty())
1859 if (!actRef.aliasEle.IsEmpty())
1861 con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
1864 condition.isPerfume = TC.IsPC && actRef.
isPerfume;
1865 Condition condition2 =
TC.AddCondition(condition);
1866 if (condition2 !=
null && condition2.
isPerfume)
1868 condition2.value = 3;
1871 if (!text4.IsEmpty())
1883 for (
int m = 0; m < 4 +
EClass.
rnd(2); m++)
1902 bool isPowerful =
TC.IsPowerful;
1903 string n = actRef.n1;
1904 if (n ==
"ConSuffocation")
1906 power = power * 2 / 3;
1909 int num10 = TC.WIL * (isPowerful ? 20 : 5);
1911 if (condition3 !=
null)
1913 num10 += condition3.power * 5;
1917 TC.Say(
"debuff_resist",
TC);
1924 if (!actRef.aliasEle.IsEmpty())
1941 TC.MutateRandom(1, 100, ether:
false, state);
1948 TC.MutateRandom(-1, 100, ether:
false, state);
1968 if (blessed || flag)
1972 Dialog.
InputName(
"dialogWish",
"q", delegate(
bool cancel,
string text)
1989 tc.
Say(
"faith_curse", tc,
faith.Name);
1994 tc.
Say(
"faith_bless", tc,
faith.Name);
1996 tc.
ModExp(306, power * 10);
1997 tc.
ModExp(85, power * 10);
2009 int gender2 = gender
switch
2023 if (blessed && age2 > 1)
2025 tc.
Say(
"ageDown", tc);
2030 tc.
Say(
"ageUp", tc);
2040 if (!flag && age <= 0)
2045 age = Mathf.Max(0, age * 100 / (flag ? 75 : (blessed ? 400 : 200))) + (flag ? 1 : 0);
2046 tc.
Say(flag ?
"ageUp" :
"ageDown", tc);
2064 tc.
Say(
"eternalYouth2", tc);
2078 tc.
Say(
"eternalYouth1", tc);
2079 tc.c_lockedAge = age3 + 1;
2091 Debug.Log(power +
"/" +
id.ToString() +
"/" + actRef.n1);
2096 if (power < 0 ||
id ==
EffectId.DebuffStats)
2098 power = Mathf.Abs(power);
2112 List<KeyValuePair<int, Chara>> list4 =
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();
2113 if (
TC.IsPCFaction ||
TC.IsPCFactionMinion)
2115 if (
TC.IsPC && list4.Count == 0)
2119 if (list4.Count > 0)
2121 list4.RandomItem().Value.Chara.GetRevived();
2125 TC.SayNothingHappans();
2134 bool flag7 =
id == EffectId.DamageBody ||
id ==
EffectId.DamageBodyGreat;
2135 bool mind =
id == EffectId.DamageMind ||
id ==
EffectId.DamageMindGreat;
2136 int num7 = ((
id == EffectId.DamageBody ||
id ==
EffectId.DamageMind) ? 1 : (4 +
EClass.
rnd(4)));
2145 TC.PlayEffect(
"debuff");
2146 TC.PlaySound(
"debuff");
2148 TC.Say(flag7 ?
"damageBody" :
"damageMind",
TC);
2149 for (
int k = 0; k < num7; k++)
2151 TC.DamageTempElements(power, flag7, mind,
id !=
EffectId.Weaken);
2164 bool flag10 =
id == EffectId.EnhanceBody ||
id ==
EffectId.EnhanceBodyGreat;
2165 bool mind2 =
id == EffectId.EnhanceMind ||
id ==
EffectId.EnhanceMindGreat;
2170 TC.Say(flag10 ?
"enhanceBody" :
"enhanceMind",
TC);
2171 TC.PlayEffect(
"buff");
2172 TC.PlaySound(
"buff");
2173 TC.EnhanceTempElements(power, flag10, mind2, onlyRenew:
true);
2179 bool flag8 =
id ==
EffectId.RestoreBody;
2185 TC.Say(flag8 ?
"restoreBody" :
"restoreMind",
TC);
2186 TC.PlaySound(
"heal");
2187 TC.PlayEffect(
"heal");
2197 TC.CureHost(
CureType.HealComplete, power, state);
2198 TC.Say(
"heal_heavy",
TC);
2207 if (actRef.act !=
null)
2209 Debug.Log(actRef.act.id);
2211 int num12 =
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();
2212 if (actRef.refThing !=
null)
2214 num12 = num12 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
2218 TC.DamageHP(num12 / 2, 919, power);
2221 TC.HealHPHost(num12, (actRef.refThing ==
null &&
id !=
EffectId.JureHeal) ? HealSource.Magic :
HealSource.Item);
2223 TC.Say((power >= 300) ?
"heal_heavy" :
"heal_light",
TC);
2229 TC.Say(
"heal_jure",
TC);
2245 CC.Say(
"removeHex",
TC, item7.
Name.ToLower());
2256 TC.PlaySound(
"heal");
2257 TC.PlayEffect(
"heal");
2260 TC.Say(
"cureCorruption_curse",
TC);
2262 TC.ModCorruption(power);
2266 TC.Say(
"cureCorruption",
TC);
2267 TC.ModCorruption(-power * (blessed ? 150 : 200) / 100);
2275 TC.Say(
"drinkRamune",
TC);
2279 TC.Say(
"drinkGood",
TC);
2285 TC.Say(
"drinkMilk",
TC);
2302 TC.Say(
"drinkWater_dirty",
TC);
2308 TC.Say(
"drinkWater_clear",
TC);
2314 TC.Say(
"drinkWater_dirty",
TC);
2322 if (
TC.HasElement(1211))
2324 TC.Say(
"drinkSaltWater_snail",
TC);
2325 int num11 = ((TC.hp > 10) ? (
TC.hp -
EClass.
rnd(10)) : 10000);
2330 TC.Say(
"drinkSaltWater",
TC);
2335 if (
TC.HasElement(1215))
2337 TC.Say(
"drunk_dwarf",
TC);
2493 if (list8.Count != 0)
2495 Thing thing5 = list8.RandomItem();
2496 TC.Say(
"acid_hit",
TC);
2499 TC.Say(
"acid_nullify", thing5);
2501 else if (thing5.
encLV > -5)
2503 TC.Say(
"acid_rust",
TC, thing5);
2515 TC.DamageHP(power / 5, actRef.idEle, power);
2526 TC.Say(
"drink_acid",
TC);
2527 TC.DamageHP(power / 5, 923, power);
2530 Msg.
Say(
"nothingHappens");
2538 TC.Say(
"love_curse_self",
TC);
2542 TC.Say(
"love_curse", CC,
TC);
2543 TC.ModAffinity(CC, -power / 4, show:
false);
2545 TC.ShowEmo(
Emo.angry);
2549 LoveMiracle(
TC, CC, power,
id, state);
2555 if (
TC.HasElement(1532))
2557 TC.SetMutation(1532);
2561 TC.SetMutation(1533, 1);
2568 if (
TC.HasElement(1533))
2570 TC.SetMutation(1533);
2574 TC.SetMutation(1532, 1);
2577 TC.PlayEffect(
"aura_heaven");
2578 TC.PlaySound(
"godbless");
2581 TC.Say(
"grow_hair_fail",
TC);
2584 TC.Say(
"grow_hair",
TC);
2597 if (!CC.IsHostile(
TC))
2617 Proc(_id, orgPower, _state, cc, tc, _ref1);
2623 tc.
Say(
"eat_poison", tc);
2625 if (power > 100000000)
2629 int num = (int)Mathf.Sqrt(power * 100);
2641 tc.
Say(
"love_ground", tc);
2645 tc.
Say(
"love_chara", c, tc);
2654 tc.
Say(
"item_drop", thing);
2658 Thing c2 = tc.
MakeMilk(effect:
true, 1, addToZone:
true, state);
2659 tc.
Say(
"item_drop", c2);
2663 Thing c3 = tc.
MakeEgg(effect:
true, 1, addToZone:
true, (idEffect ==
EffectId.LovePlus) ? 3 : 20, state);
2664 tc.
Say(
"item_drop", c3);
2678 tc.
Say(
"love_ground", tc);
2682 tc.
Say(
"love_chara", c, tc);
2691 for (
int i = 0; i < 10000; i++)
2707 string netMsg =
GameLang.
Parse(
"wish".langGame(), thirdPerson:
true, name, s);
2709 List<WishItem> list =
new List<WishItem>();
2710 int wishLv = 10 + power / 4;
2711 int wishValue = 5000 + power * 50;
2714 wishLv = wishLv * 150 / 100;
2718 wishLv = wishLv * 150 / 100;
2721 Debug.Log(power +
"/" + wishValue);
2722 string _s = s.ToLower();
2730 if (
item.giftRank >= 2 &&
item.IsValidArtifact(r.
id))
2757 string text = r.
GetName().ToLower();
2758 int score = Compare(_s, text);
2771 if (category.IsChildOf(
"weapon") || category.IsChildOf(
"armor") || category.IsChildOf(
"ranged"))
2773 CardBlueprint.SetRarity(Rarity.Legendary);
2778 bool flag2 = thing.trait is
TraitDeed || thing.rarity >=
Rarity.Artifact || thing.
source._origin ==
"artifact_summon";
2782 thing.c_charges = 0;
2785 num = EClass.rndHalf(wishValue * 3);
2788 num = EClass.rndHalf(wishValue / 500 + 4);
2791 num = EClass.rndHalf(wishValue / 500 + 4);
2794 num = EClass.rndHalf(wishValue / 2000 + 4);
2797 if (!flag2 && thing.trait.CanStack)
2799 int num2 = wishValue;
2801 for (int i = 1; i < 1000; i++)
2803 int num3 = price + i * 2 * (price + 500);
2804 if (num3 > 0 && num2 > num3)
2813 if (price > 2500 && num > 3)
2815 num = 3 + (int)Mathf.Sqrt(num - 3);
2817 if (price > 5000 && num > 2)
2819 num = 2 + (int)Mathf.Sqrt(num - 2) / 2;
2821 if (price > 10000 && num > 1)
2823 num = 1 + Mathf.Min((
int)Mathf.Sqrt(num - 1) / 3, 2);
2830 Debug.Log(_s +
"/" + num +
"/" + score);
2831 if (thing.HasTag(
CTAG.godArtifact))
2848 if (list.Count == 0)
2850 netMsg = netMsg + Lang.space +
"wishFail".langGame();
2858 list.Sort((WishItem a, WishItem b) => b.score - a.score);
2859 foreach (WishItem item2
in list)
2861 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
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 CardBlueprint current
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
bool HasElement(int ele, int req=1)
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)
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)
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)
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)