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);
181 if (CC.IsPCFactionOrMinion && (CC.HasElement(1651) ||
EClass.
pc.
Evalue(1651) >= 2))
188 if (
item.IsPCFactionOrMinion)
193 else if ((e.id != 910 && e.id != 911) || !
item.IsFood || !
item.category.IsChildOf(
"foodstuff"))
251 bool isChara = CC.isChara;
255 num4 = num4 * 100 / (50 + point.Distance(p) * 75);
263 Dice dice =
Dice.
Create(text2, power, CC, (actref.refThing !=
null) ? null : actref.act);
282 num4 = num4 * (int)Mathf.Min(70f + Mathf.Sqrt(CC.Evalue(101)) * 3f, 200f) / 100;
290 num4 = num4 * 100 / (90 + point.Distance(p) * 10);
298 if ((actref.noFriendlyFire && !CC.Chara.IsHostile(c as
Chara)) || (flag && c == CC))
302 if (isChara && points.Count > 1 && c !=
null && c.
isChara && CC.isChara && CC.Chara.IsFriendOrAbove(c.
Chara))
304 int num5 = CC.Evalue(302);
305 if (!CC.IsPC && CC.IsPCFactionOrMinion)
309 if (CC.HasElement(1214))
319 CC.ModExp(302, CC.IsPC ? 10 : 50);
323 num4 =
EClass.
rnd(num4 * 100 / (100 + num5 * 10 + 1));
326 CC.ModExp(302, CC.IsPC ? 20 : 100);
333 if ((CC.HasElement(1214) || (!CC.IsPC && (CC.IsPCFaction || CC.IsPCFactionMinion) &&
EClass.
pc.
HasElement(1214))) &&
EClass.
rnd(5) != 0)
340 if (lang ==
"spell_hand")
342 string[] list2 =
Lang.
GetList(
"attack" + (CC.isChara ? CC.Chara.race.meleeStyle.IsEmpty(
"Touch") :
"Touch"));
343 string @ref =
"_elehand".lang(e.source.GetAltname(2), list2[4]);
344 CC.Say(c.
IsPCParty ?
"cast_hand_ally" :
"cast_hand", CC, c, @ref, c.
IsPCParty ? list2[1] : list2[2]);
348 CC.Say(lang +
"_hit", CC, c, e.
Name.ToLower());
351 Chara chara = (CC.isChara ? CC.Chara : ((actref.refThing !=
null) ?
EClass.
_map.
FindChara(actref.refThing.c_uidRefCard) :
null));
373 num4 = num4 * Act.powerMod / 100;
378 c.
DamageHP(num4, e.id, power * num / 100, attackSource, chara ?? CC);
386 AddCon<ConGravity>(1, power);
387 AddCon<ConBlind>(4, power);
388 AddCon<ConDim>(5, power / 2);
389 AddCon<ConSupress>(3, power / 2);
390 if (actref.refThing !=
null && actref.refThing.id ==
"gun_gravity2")
392 AddCon<ConEntangle>(4, power / 3);
393 AddCon<ConSilence>(4, power / 3);
394 AddCon<ConWeakResEle>(4, power);
395 AddCon<ConNightmare>(4, power);
402 long num6 = num4 * num / 100;
403 Debug.Log(num4 +
" v:" + num6 +
" evalue:" + e.Value +
" power:" + power +
" elepMod:" + num);
409 CC.Chara.mana.Mod((
int)num6);
423 void AddCon<T>(
int rate,
int power) where T :
Condition
435 EffectId.Suicide => CC.LV / 3 + 40,
436 EffectId.Meteor => 50 + power / 20,
437 _ => (actref.refThing !=
null) ? actref.refThing.material.hardness : (30 + power / 20),
439 bool flag5 = EClass._zone.HasLaw && !EClass._zone.IsPCFaction && (CC.IsPC || (
id == EffectId.Explosive && actref.refThing ==
null)) && !(EClass._zone is
Zone_Vernis);
475 p.
ModFire(-20, extinguish:
true);
480 foreach (
Card item3
in list)
496 bool flag2 = isNeg || flag;
516 CC.
Say(
"spell_earthquake", CC, element.
Name.ToLower());
526 DamageEle(CC,
id, power, element, list, actRef,
"spell_earthquake");
535 if (list3.Count == 0)
539 CC.
Say(
"spell_ball", CC, element.
Name.ToLower());
549 DamageEle(CC,
id, power, element, list3, actRef,
"spell_ball");
557 List<Point> list6 =
new List<Point>();
558 list6.Add(tp.
Copy());
564 if (!
DamageEle(CC,
id, power, element, list6, actRef, (
id ==
EffectId.DrainBlood ||
id ==
EffectId.DrainMana) ?
"" : ((
id ==
EffectId.Sword) ?
"spell_sword" :
"spell_hand")))
566 CC.
Say(
"spell_hand_miss", CC, element.
Name.ToLower());
574 List<Point> list7 =
new List<Point>();
575 list7.Add(tp.
Copy());
576 CC.
Say((
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow", CC, element.
Name.ToLower());
582 DamageEle(CC,
id, power, element, list7, actRef, (
id ==
EffectId.MoonSpear) ?
"spell_spear" :
"spell_arrow");
587 string n = actRef.n1;
588 if (!(n ==
"special"))
596 if (!
item.pos.IsSunLit)
598 item.pos.PlayEffect(
"darkwomb3");
608 CC.
Say(
"summon_ally", CC);
618 CC.
Say(
"summon_ally_fail", CC);
621 string id3 = actRef.n1;
626 bool flag4 = actRef.n1 ==
"special";
633 num3 = Mathf.Clamp(power / 100, 1, 5) + ((power >= 100) ?
EClass.
rnd(2) : 0);
640 case "special_force":
651 num3 = Mathf.Clamp(7 + CC.
LV / 100, 4, 20);
660 for (
int j = 0; j < num3; j++)
668 if (point ==
null || !point.
IsValid)
676 CardBlueprint.current.lv = num5;
680 CardBlueprint.current.idEle = text;
747 if (!(n ==
"shadow"))
758 num7 = (CC.IsPCFactionOrMinion ? (CC.LV / 2) : (CC.
LV / 3 * 2));
762 num6 = chara.LV * (100 + power / 10) / 100 + power / 30;
776 num6 = power / 10 + 1;
780 chara.
SetLv((
int)num6);
788 if (!(n ==
"shadow"))
790 if (n ==
"special_force")
797 chara.hp = chara.MaxHP / 2;
802 Chara chara2 = chara;
804 chara2.hostility = hostility2;
806 else if (!(chara.
id ==
"cocoon") && (!(actRef.n1 ==
"monster") || actRef.refThing ==
null))
818 CC.
Say(
"summon_ally_fail", CC);
827 CC.
Say(
"summon_ally_fail", CC);
830 CC.
Say(
"spell_funnel", CC, element.
Name.ToLower());
835 chara3.
SetLv(power / 15);
845 if (list2.Count == 0)
849 CC.
Say(
"spell_breathe", CC, element.
Name.ToLower());
859 DamageEle(CC,
id, power, element, list2, actRef,
"spell_breathe");
886 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))))));
887 if ((
id ==
EffectId.Explosive ||
id ==
EffectId.Rocket) && actRef.refThing !=
null)
889 radius2 = 2 + actRef.refThing.Evalue(666);
906 bool flag5 =
id == EffectId.Explosive ||
id == EffectId.Suicide ||
id ==
EffectId.Rocket;
908 if (list5.Count == 0)
912 cc.
Say((
id ==
EffectId.Suicide) ?
"abSuicide" :
"spell_ball", cc, element.
Name.ToLower());
918 tp.PlayEffect(
"flare");
922 cc.PlaySound((id == EffectId.Flare) ?
"spell_flare" :
"spell_ball");
929 DamageEle(actRef.origin ?? cc,
id, power, element, list5, actRef, (
id ==
EffectId.Suicide) ?
"suicide" :
"spell_ball");
939 if (list4.Count == 0)
943 CC.
Say(
"spell_bolt", CC, element.
Name.ToLower());
953 DamageEle(CC,
id, power, element, list4, actRef,
"spell_bolt");
963 CC.
Say(
"ab" +
id, CC);
967 int id2 = ((
id ==
EffectId.Puddle) ? 4 : ((
id ==
EffectId.Bubble) ? 5 : ((
id ==
EffectId.MistOfDarkness) ? 6 : 7)));
970 if (
id ==
EffectId.Bubble && CC.
id ==
"cancer")
975 for (
int i = 0; i < num; i++)
1000 List<Card> list8 = tp.
ListCards().ToList();
1002 if (list8.Contains(CC))
1005 list8.Insert(0, CC);
1008 foreach (
Card item3
in list8)
1010 if (tc ==
null || item3 == tc)
1012 Proc(
id, power, state, CC, item3, actRef);
1013 if (flag2 && item3.
isChara && item3 != CC)
1015 CC.DoHostileAction(item3);
1017 if (actRef.refThing ==
null || !(actRef.refThing.trait is
TraitRod))
1022 if ((uint)(effectId - 200) <= 4u)
1031 CC.SayNothingHappans();
1050 int orgPower = power;
1051 if (blessed || flag)
1059 Point randomPoint = CC.
pos.
GetRandomPoint(2, requireLos:
false, allowChara:
false, allowBlocked:
false, 200);
1062 CC.
Say(
"split_fail", CC);
1067 CC.
Say(
"split", CC);
1075 CC.
Say(
"escape", CC);
1086 CC.
Say(
"burn_mana", CC);
1094 if (list2.Count == 0)
1102 item.PlayEffect(
"vanish");
1114 thing.c_idRefCard =
"dog_mine";
1115 Zone.ignoreSpawnAnime =
true;
1119 case EffectId.LittleSisterMigration:
1126 List<Chara> list3 =
new List<Chara>();
1141 if (list3.Count == 0)
1147 foreach (
Chara item2
in list3)
1152 Msg.
Say(
"little_migration", list3.Count.ToString() ??
"");
1154 EClass.player.stats.sistersDepart += list3.Count;
1165 CC.
Say(
"abMagicMap_curse", CC);
1171 CC.
Say(
"abMagicMap", CC);
1189 Dice dice =
Dice.
Create(
"ActManaAbsorb", power, CC, (actRef.refThing !=
null) ? null : actRef.act);
1190 TC.mana.Mod(dice.
Roll());
1191 TC.PlaySound(
"heal");
1192 TC.PlayEffect(
"heal");
1195 CC.
Say(
"absorbMana", CC);
1207 TC.PlaySound(
"curse3");
1208 TC.PlayEffect(
"curse");
1209 TC.Say(
"forgetItems",
TC);
1210 int num4 = power / 50 + 1 +
EClass.
rnd(3);
1211 List<Thing> source =
TC.things.List((
Thing t) => t.c_IDTState == 0);
1212 for (
int j = 0; j < num4; j++)
1214 source.RandomItem().c_IDTState = 5;
1223 bool armor =
id == EffectId.EnchantArmor ||
id ==
EffectId.EnchantArmorGreat;
1224 bool flag5 =
id == EffectId.EnchantWeaponGreat ||
id ==
EffectId.EnchantArmorGreat;
1234 cc.
Say(
"enc_curse", tc);
1238 int num5 = (flag5 ? 4 : 2) + (blessed ? 1 : 0);
1239 if (tc.
encLV >= num5)
1241 cc.
Say(
"enc_resist", tc);
1251 bool flag3 =
id ==
EffectId.GreaterIdentify;
1301 int num3 = (tc.isWeightChanged ? tc.c_weight : tc.
Thing.
source.weight);
1302 tc.isWeightChanged =
true;
1310 num3 = (int)(0.01f * (
float)num3 * (float)power * 0.75f + 500f);
1311 if (num3 < 0 || num3 > 10000000)
1329 cc.
Say(
"lighten_curse", cc, tc);
1333 num3 = num3 * (100 - power / 10) / 100;
1351 cc.
Say(
"lighten", cc, tc);
1375 cc.
Say(
"reconstruct", cc, tc);
1376 EClass.game.cards.uidNext +=
EClass.
rnd(30);
1380 blesstedState = state
1383 thing3.genLv = num6;
1385 CC.
Pick(thing3, msg:
false);
1392 case EffectId.ChangeMaterialLesser:
1394 case EffectId.ChangeMaterialGreater:
1406 string name = tc.
Name;
1409 bool num =
id ==
EffectId.ChangeMaterialGreater;
1410 bool flag2 =
id ==
EffectId.ChangeMaterialLesser;
1430 num2 = Mathf.Clamp(num2 +
EClass.
rnd(2), 0, 4);
1433 text2 = ((text2 ==
"metal") ?
"leather" :
"metal");
1436 for (
int i = 0; i < 1000; i++)
1447 if ((tc.
id ==
"log" || tc.
id ==
"branch") && tc.material.alias ==
"carbone")
1463 cc.
Say(
"materialChanged", name, row.GetName());
1484 Dialog.
InputName(
"dialogVoidReturn".lang(max.ToString() ??
""), max.ToString() ??
"", delegate(
bool cancel,
string text)
1488 destLv = Mathf.Abs(text.ToInt());
1489 destLv = Mathf.Clamp(destLv, 1, max) * -1;
1491 Debug.Log(destLv +
"/" + zone);
1497 Msg.
Say(
"returnComplete");
1498 EClass.player.uidLastTravelZone = 0;
1500 EClass.player.lastZonePos =
null;
1501 EClass.player.returnInfo =
null;
1528 Msg.
Say(
"returnNowhere");
1541 EClass.player.returnInfo =
null;
1591 Thing t3 =
ThingGen.
Create(
new string[6] {
"330",
"331",
"334",
"335",
"336",
"1142" }.RandomItem());
1597 List<Condition> list4 =
new List<Condition>();
1600 if (GetBlessingDifficulty(condition4) > 0 &&
EClass.
rnd(GetBlessingDifficulty(condition4)) == 0)
1602 list4.Add(condition4);
1605 if (list4.Count == 0)
1610 TC.pos.PlayEffect(
"holyveil");
1611 TC.pos.PlaySound(
"holyveil");
1612 TC.Say(
"unpolluted",
TC);
1645 TC.pos.PlayEffect(
"holyveil");
1646 TC.pos.PlaySound(
"holyveil");
1647 TC.pos.PlaySound(
"atk_eleSound");
1648 TC.conditions.ForeachReverse(delegate(
Condition c)
1655 TC.Say(
"abShutterHex",
TC);
1657 List<Chara> list10 =
TC.pos.ListCharasInRadius(
TC, 4, (
Chara c) => c ==
TC || c.IsHostile(CC));
1658 for (
int m = 0; m < num12; m++)
1660 TweenUtil.Delay((
float)m * 0.1f, delegate
1664 foreach (
Chara item5
in list10)
1669 TrailRenderer componentInChildren = effect.GetComponentInChildren<TrailRenderer>();
1671 componentInChildren.startColor = startColor;
1673 TweenUtil.Delay((
float)m * 0.1f, delegate
1675 effect.
Play(center, 0f, pos);
1677 int num13 =
Dice.
Create(
"SpShutterHex", power, CC, (actRef.refThing !=
null) ? null : actRef.act).Roll();
1686 if (CC.
Dist(
TC) <= 1 || (CC.IsPCFactionOrMinion && TC.IsPCFactionOrMinion &&
TC.isRestrained))
1695 if (point ==
null || !CC.
CanSeeLos(point))
1699 CC.
Say(
"abDraw", CC,
TC);
1706 if (CC.
id ==
"tentacle")
1715 if (nearbyCatToSniff !=
null)
1717 CC.
Sniff(nearbyCatToSniff);
1727 if (
TC.Evalue(426) > 0)
1729 TC.Say((actRef.n1 ==
"money") ?
"abStealNegateMoney" :
"abStealNegate",
TC);
1732 Thing thing6 =
null;
1733 bool flag9 = actRef.n1 ==
"food";
1734 if (actRef.n1 ==
"money")
1746 Func<Thing, bool> func = (
Thing t) =>
true;
1749 func = (
Thing t) => t.IsFood;
1751 List<Thing> list9 =
TC.things.List(delegate(
Thing t)
1757 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);
1758 }, onlyAccessible:
true);
1759 if (list9.Count > 0)
1761 thing6 = list9.RandomItem();
1764 thing6 = thing6.
Split(1);
1771 CC.
Say(
"abStealNothing", CC,
TC);
1776 CC.
Pick(thing6, msg:
false);
1778 if (actRef.n1 ==
"food")
1787 CC.
Say(
"abStealEscape", CC);
1788 CC.
Teleport(GetTeleportPos(tc.
pos, 30), silent:
true);
1797 if (CC !=
null && CC !=
TC)
1799 TC.Say(
"curse", CC,
TC);
1801 TC.PlaySound(
"curse3");
1802 TC.PlayEffect(
"curse");
1803 if (
EClass.
rnd(150 +
TC.LUC * 5 +
TC.Evalue(972) * 20) >= power + (flag ? 200 : 0) ||
TC.TryNullifyCurse())
1807 List<Thing> list5 =
TC.things.List(delegate(
Thing t)
1815 if (list5.Count == 0)
1820 Thing thing4 = list5.RandomItem();
1821 TC.Say(
"curse_hit",
TC, thing4);
1829 TC.Say(
"uncurseEQ" + (blessed ?
"_bless" : (flag ?
"_curse" :
"")),
TC);
1830 TC.PlaySound(
"uncurse");
1831 TC.PlayEffect(
"uncurse");
1839 List<Thing> list =
new List<Thing>();
1840 TC.things.Foreach(delegate(
Thing t)
1845 if (t.blessedState == BlessedState.Cursed)
1847 num14 = EClass.rnd(200);
1851 num14 = EClass.rnd(1000);
1857 if (
id ==
EffectId.UncurseEQGreater)
1863 TC.Say(
"uncurseEQ_success", t);
1879 foreach (
Thing item6
in list)
1883 if (success == 0 && fail == 0)
1885 TC.SayNothingHappans();
1889 TC.Say(
"uncurseEQ_fail");
1895 string text3 = actRef.n1;
1900 if (!text4.IsEmpty())
1907 if (!actRef.aliasEle.IsEmpty())
1909 con.SetElement(EClass.sources.elements.alias[actRef.aliasEle].id);
1912 condition.isPerfume = TC.IsPC && actRef.
isPerfume;
1913 Condition condition2 =
TC.AddCondition(condition);
1914 if (condition2 !=
null && condition2.
isPerfume)
1916 condition2.value = 3;
1919 if (!text4.IsEmpty())
1931 for (
int k = 0; k < 4 +
EClass.
rnd(2); k++)
1950 bool isPowerful =
TC.IsPowerful;
1951 string n = actRef.n1;
1952 if (n ==
"ConSuffocation")
1954 power = power * 2 / 3;
1957 int num10 = TC.WIL * (isPowerful ? 20 : 5);
1959 if (condition3 !=
null)
1961 num10 += condition3.power * 5;
1965 TC.Say(
"debuff_resist",
TC);
1973 if (!actRef.aliasEle.IsEmpty())
1990 TC.MutateRandom(1, 100, ether:
false, state);
1997 TC.MutateRandom(-1, 100, ether:
false, state);
2017 if (blessed || flag)
2021 Dialog.
InputName(
"dialogWish",
"q", delegate(
bool cancel,
string text)
2038 tc.
Say(
"faith_curse", tc,
faith.Name);
2043 tc.
Say(
"faith_bless", tc,
faith.Name);
2045 tc.
ModExp(306, power * 10);
2046 tc.
ModExp(85, power * 10);
2058 int gender2 = gender
switch
2072 if (blessed && age3 > 1)
2074 tc.
Say(
"ageDown", tc);
2079 tc.
Say(
"ageUp", tc);
2088 int num11 = ((actRef.refThing !=
null) ? actRef.refThing.GetInt(118) : actRef.refVal);
2094 num11 = EClass.game.seed + tc.
uid;
2098 tc.
Say(
"transBlood", tc);
2100 tc.c_bloodData =
null;
2109 if (!flag && age <= 0)
2114 age = Mathf.Max(0, age * 100 / (flag ? 75 : (blessed ? 400 : 200))) + (flag ? 1 : 0);
2115 tc.
Say(flag ?
"ageUp" :
"ageDown", tc);
2133 tc.
Say(
"eternalYouth2", tc);
2147 tc.
Say(
"eternalYouth1", tc);
2148 tc.c_lockedAge = age2 + 1;
2160 Debug.Log(power +
"/" +
id.ToString() +
"/" + actRef.n1);
2171 else if (
id ==
EffectId.DebuffStats)
2176 if (power < 0 ||
id ==
EffectId.DebuffStats)
2178 power = Mathf.Abs(power);
2192 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();
2193 if (
TC.IsPCFaction ||
TC.IsPCFactionMinion)
2195 if (
TC.IsPC && list8.Count == 0)
2199 if (list8.Count > 0)
2201 list8.RandomItem().Value.Chara.GetRevived();
2205 TC.SayNothingHappans();
2214 bool flag10 =
id == EffectId.DamageBody ||
id ==
EffectId.DamageBodyGreat;
2215 bool mind2 =
id == EffectId.DamageMind ||
id ==
EffectId.DamageMindGreat;
2216 int num9 = ((
id == EffectId.DamageBody ||
id ==
EffectId.DamageMind) ? 1 : (4 +
EClass.
rnd(4)));
2225 TC.PlayEffect(
"debuff");
2226 TC.PlaySound(
"debuff");
2228 TC.Say(flag10 ?
"damageBody" :
"damageMind",
TC);
2229 for (
int l = 0; l < num9; l++)
2231 TC.DamageTempElements(power, flag10, mind2,
id !=
EffectId.Weaken);
2244 bool flag7 =
id == EffectId.EnhanceBody ||
id ==
EffectId.EnhanceBodyGreat;
2245 bool mind =
id == EffectId.EnhanceMind ||
id ==
EffectId.EnhanceMindGreat;
2250 TC.Say(flag7 ?
"enhanceBody" :
"enhanceMind",
TC);
2251 TC.PlayEffect(
"buff");
2252 TC.PlaySound(
"buff");
2253 TC.EnhanceTempElements(power, flag7, mind, onlyRenew:
true);
2259 bool flag8 =
id ==
EffectId.RestoreBody;
2265 TC.Say(flag8 ?
"restoreBody" :
"restoreMind",
TC);
2266 TC.PlaySound(
"heal");
2267 TC.PlayEffect(
"heal");
2277 TC.CureHost(
CureType.HealComplete, power, state);
2278 TC.Say(
"heal_heavy",
TC);
2287 int num8 =
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();
2288 if (actRef.refThing !=
null)
2290 num8 = num8 * (100 + actRef.refThing.Evalue(750) * 10) / 100;
2294 TC.DamageHP(num8 / 2, 919, power);
2297 TC.HealHPHost(num8, (actRef.refThing ==
null &&
id !=
EffectId.JureHeal) ? HealSource.Magic :
HealSource.Item);
2299 TC.Say((power >= 300) ?
"heal_heavy" :
"heal_light",
TC);
2305 TC.Say(
"heal_jure",
TC);
2321 CC.Say(
"removeHex",
TC, item7.
Name.ToLower());
2332 TC.PlaySound(
"heal");
2333 TC.PlayEffect(
"heal");
2336 TC.Say(
"cureCorruption_curse",
TC);
2338 TC.ModCorruption(power);
2342 TC.Say(
"cureCorruption",
TC);
2343 TC.ModCorruption(-power * (blessed ? 150 : 200) / 100);
2351 TC.Say(
"drinkRamune",
TC);
2355 TC.Say(
"drinkGood",
TC);
2361 TC.Say(
"drinkMilk",
TC);
2378 TC.Say(
"drinkWater_dirty",
TC);
2384 TC.Say(
"drinkWater_clear",
TC);
2390 TC.Say(
"drinkWater_dirty",
TC);
2398 if (
TC.HasElement(1211))
2400 TC.Say(
"drinkSaltWater_snail",
TC);
2401 int num7 = ((TC.hp > 10) ? (
TC.hp -
EClass.
rnd(10)) : 10000);
2406 TC.Say(
"drinkSaltWater",
TC);
2411 if (
TC.HasElement(1215))
2413 TC.Say(
"drunk_dwarf",
TC);
2569 if (list6.Count != 0)
2571 Thing thing5 = list6.RandomItem();
2572 TC.Say(
"acid_hit",
TC);
2575 TC.Say(
"acid_nullify", thing5);
2577 else if (thing5.
encLV > -5)
2579 TC.Say(
"acid_rust",
TC, thing5);
2591 TC.DamageHP(power / 5, actRef.idEle, power);
2602 TC.Say(
"drink_acid",
TC);
2603 TC.DamageHP(power / 5, 923, power);
2606 Msg.
Say(
"nothingHappens");
2614 TC.Say(
"love_curse_self",
TC);
2618 TC.Say(
"love_curse", CC,
TC);
2619 TC.ModAffinity(CC, -power / 4, show:
false);
2621 TC.ShowEmo(
Emo.angry);
2625 LoveMiracle(
TC, CC, power,
id, state);
2631 if (
TC.HasElement(1532))
2633 TC.SetMutation(1532);
2637 TC.SetMutation(1533, 1);
2644 if (
TC.HasElement(1533))
2646 TC.SetMutation(1533);
2650 TC.SetMutation(1532, 1);
2653 TC.PlayEffect(
"aura_heaven");
2654 TC.PlaySound(
"godbless");
2657 TC.Say(
"grow_hair_fail",
TC);
2660 TC.Say(
"grow_hair",
TC);
2677 if (!CC.IsHostile(
TC))
2697 Proc(_id, orgPower, _state, cc, tc, _ref1);
2703 tc.
Say(
"eat_poison", tc);
2705 if (power > 100000000)
2709 int num = (int)Mathf.Sqrt(power * 100);
2721 tc.
Say(
"love_ground", tc);
2725 tc.
Say(
"love_chara", c, tc);
2734 tc.
Say(
"item_drop", thing);
2738 Thing c2 = tc.
MakeMilk(effect:
true, 1, addToZone:
true, state);
2739 tc.
Say(
"item_drop", c2);
2743 Thing c3 = tc.
MakeEgg(effect:
true, 1, addToZone:
true, (idEffect ==
EffectId.LovePlus) ? 3 : 20, state);
2744 tc.
Say(
"item_drop", c3);
2758 tc.
Say(
"love_ground", tc);
2762 tc.
Say(
"love_chara", c, tc);
2771 for (
int i = 0; i < 10000; i++)
2787 string netMsg =
GameLang.
Parse(
"wish".langGame(), thirdPerson:
true, name, s);
2789 List<WishItem> list =
new List<WishItem>();
2790 int wishLv = 10 + power / 4;
2791 int wishValue = 5000 + power * 50;
2794 wishLv = wishLv * 150 / 100;
2798 wishLv = wishLv * 150 / 100;
2801 Debug.Log(power +
"/" + wishValue);
2802 string _s = s.ToLower();
2810 if (
item.giftRank >= 2 &&
item.IsValidArtifact(r.
id))
2837 string text = r.
GetName().ToLower();
2838 int score = Compare(_s, text);
2851 if (category.IsChildOf(
"weapon") || category.IsChildOf(
"armor") || category.IsChildOf(
"ranged"))
2853 CardBlueprint.SetRarity(Rarity.Legendary);
2858 bool flag2 = thing.trait is
TraitDeed || thing.rarity >=
Rarity.Artifact || thing.
source._origin ==
"artifact_summon";
2862 thing.c_charges = 0;
2865 num = EClass.rndHalf(wishValue * 3);
2868 num = EClass.rndHalf(wishValue / 500 + 4);
2871 num = EClass.rndHalf(wishValue / 500 + 4);
2874 num = EClass.rndHalf(wishValue / 2000 + 4);
2877 if (!flag2 && thing.trait.CanStack)
2879 int num2 = wishValue;
2881 for (int i = 1; i < 1000; i++)
2883 int num3 = price + i * 2 * (price + 500);
2884 if (num3 > 0 && num2 > num3)
2893 if (price > 2500 && num > 3)
2895 num = 3 + (int)Mathf.Sqrt(num - 3);
2897 if (price > 5000 && num > 2)
2899 num = 2 + (int)Mathf.Sqrt(num - 2) / 2;
2901 if (price > 10000 && num > 1)
2903 num = 1 + Mathf.Min((
int)Mathf.Sqrt(num - 1) / 3, 2);
2910 Debug.Log(_s +
"/" + num +
"/" + score);
2911 if (thing.HasTag(
CTAG.godArtifact))
2928 if (list.Count == 0)
2930 netMsg = netMsg + Lang.space +
"wishFail".langGame();
2938 list.Sort((WishItem a, WishItem b) => b.score - a.score);
2939 foreach (WishItem item2
in list)
2941 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 float rndf(float a)
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 power=100, 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)
void SetEffect(int x, int z, CellEffect effect=null)
List< Point > ListPointsInLine(Point center, Point to, int radius, bool returnOnBlocked=true)
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)