14 return EClass.gamedata.shrines[this.owner.refVal];
20 public override bool RenderExtra
24 return this.owner.isOn && this.owner.IsInstalled;
29 public override void OnCreate(
int lv)
32 this.owner.refVal =
EClass.gamedata.shrines.IndexOf(
EClass.gamedata.shrines.RandomItemWeighted((
ShrineData a) => a.chance));
33 this.owner.idSkin = this.Shrine.skin;
37 public override void _OnUse(
Chara c)
39 Point point = this.owner.ExistsOnMap ? this.owner.pos :
EClass.pc.pos;
40 string id = this.Shrine.id;
41 uint num = <PrivateImplementationDetails>.ComputeStringHash(
id);
42 if (num <= 1052114667U)
44 if (num != 164943590U)
46 if (num != 413259977U)
48 if (num != 1052114667U)
52 if (!(
id ==
"knowledge"))
56 Thing t =
ThingGen.Create((
EClass.rnd(3) == 0) ?
"book_skill" :
"book_ancient", -1,
this.owner.LV);
57 EClass._zone.AddCard(t, point);
62 if (!(
id ==
"replenish"))
66 using (List<Chara>.Enumerator enumerator =
EClass.pc.party.members.GetEnumerator())
68 while (enumerator.MoveNext())
70 Chara chara = enumerator.Current;
71 chara.hp = chara.MaxHP;
72 chara.mana.value = chara.mana.max;
73 chara.stamina.Mod(chara.stamina.max / 3);
76 chara.stamina.value = chara.stamina.max;
78 chara.PlayEffect(
"revive",
true, 0f,
default(Vector3));
79 chara.Say(
"heal_light", chara,
null,
null);
82 if (condition.Type == ConditionType.Debuff && !condition.IsKilled)
84 chara.Say(
"removeHex", chara, condition.Name.ToLower(),
null);
85 condition.Kill(
false);
93 else if (!(
id ==
"strife"))
97 for (
int i = 0; i < 3 +
EClass.rnd(2); i++)
99 Chara chara2 =
EClass._zone.SpawnMob(point.GetNearestPoint(
false,
false,
true,
false), (i == 0) ?
SpawnSetting.Boss(
this.owner.LV, -1) :
SpawnSetting.DefenseEnemy(
this.owner.LV));
102 chara2.PlayEffect(
"teleport",
true, 0f,
default(Vector3));
107 if (num <= 3538210912U)
109 if (num != 2671260646U)
111 if (num != 3538210912U)
115 if (!(
id ==
"material"))
121 n1 = this.GetMaterial().alias
132 EClass._zone.AddCard(t2, point);
135 else if (num != 3841201909U)
137 if (num != 4165567700U)
141 if (!(
id ==
"armor"))
145 bool flag = this.mat.alias ==
"gold";
146 ActEffect.Proc(flag ? EffectId.EnchantArmorGreat : EffectId.EnchantArmor, 100, flag ? BlessedState.Blessed : BlessedState.Normal,
EClass.pc,
null,
default(
ActRef));
151 if (!(
id ==
"invention"))
155 EClass.player.recipes.ComeUpWithRandomRecipe(
null, 10);
163 PaintPosition paintPosition =
EClass.setting.render.paintPos.TryGetValue(
"shrine",
null);
165 p.x += paintPosition.pos.x * (float)num;
166 p.y += paintPosition.pos.y;
167 p.z += paintPosition.pos.z;
168 p.tile = (float)(
EClass.core.refs.renderers.objs_shrine.ConvertTile(
this.Shrine.tile) * num);
169 p.matColor = (float)
BaseTileMap.GetColorInt(ref
this.GetMaterial().matColor, 100);
170 EClass.core.refs.renderers.objs_shrine.Draw(p);
176 if (this.mat !=
null)
180 Rand.SetSeed(this.owner.c_seed);
181 if (this.Shrine.id ==
"armor")
183 this.mat =
EClass.sources.materials.alias[(
EClass.rnd(5) == 0) ?
"gold" :
"granite"];
187 this.mat =
MATERIAL.GetRandomMaterial(this.owner.LV / 3, (
EClass.rnd(2) == 0) ?
"metal" :
"leather",
false);
194 public override string GetName()
197 if (this.Shrine.id ==
"material")
199 @ref = this.GetMaterial().GetName().ToTitleCase(
false);
201 return (
"shrine_" + this.Shrine.id).lang(@ref,
null,
null,
null,
null);