Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ZonePreEnterEncounter.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
6{
7 public int enemies;
8
9 public int roadDist;
10
11 public Chara mob;
12
13 public override void Execute()
14 {
15 bool flag = EClass.pc.HasCondition<ConDrawMetal>();
16 int lv = Mathf.Max(EClass._zone.DangerLv, EClass.pc.FameLv * Math.Min(roadDist * 20, 100) / 100);
17 if (mob != null)
18 {
19 List<Chara> list = new List<Chara>();
20 Chara leader = null;
21 float num = Mathf.Clamp(EClass.pc.FameLv + 8, 8f, 24f + Mathf.Sqrt(EClass.pc.FameLv));
22 for (int i = 0; i < EClass.rndHalf((int)num); i++)
23 {
24 Point randomPointInRadius = EClass.pc.pos.GetRandomPointInRadius(2, 5, requireLos: false, allowChara: false);
25 if (randomPointInRadius != null)
26 {
27 Chara chara = EClass._zone.SpawnMob(randomPointInRadius, SpawnSetting.Mob(mob.id, (mob.MainElement == Element.Void) ? null : mob.MainElement.source.alias.Substring(3)));
28 Hostility hostility2 = (chara.c_originalHostility = Hostility.Enemy);
29 chara.hostility = hostility2;
30 chara.enemy = EClass.pc.party.members.RandomItem();
31 leader = chara;
32 if (EClass.rnd(5) == 0)
33 {
35 }
36 list.Add(chara);
37 }
38 }
39 if (leader != null)
40 {
41 List<Thing> list2 = EClass.pc.things.List(delegate(Thing t)
42 {
43 if (t.Num >= 10)
44 {
45 return false;
46 }
47 return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped;
48 }, onlyAccessible: true);
49 Thing t2 = ((list2.Count > 0) ? list2.RandomItem() : null);
50 if (t2 == null)
51 {
52 GameLang.refDrama1 = (GameLang.refDrama2 = "mobPity".lang());
53 }
54 else
55 {
56 GameLang.refDrama1 = t2.NameSimple;
57 GameLang.refDrama2 = t2.Name;
58 }
59 LayerDrama.refAction1 = delegate
60 {
61 foreach (Chara item in list)
62 {
63 item.ShowEmo(Emo.angry);
64 if (EClass.rnd(6) == 0)
65 {
66 item.Talk((EClass.rnd(5) == 0) ? "rumor_bad" : ((EClass.rnd(5) == 0) ? "callGuards" : "disgust"));
67 }
68 }
69 };
70 LayerDrama.refAction2 = delegate
71 {
72 if (t2 != null)
73 {
74 leader.AddCard(t2);
75 }
76 foreach (Chara item2 in list)
77 {
78 if (EClass.rnd(6) == 0)
79 {
80 item2.Talk((EClass.rnd(5) == 0) ? "rumor_good" : ((EClass.rnd(3) == 0) ? "thanks3" : "thanks"));
81 }
82 item2.ShowEmo(Emo.happy);
83 Hostility hostility5 = (item2.c_originalHostility = Hostility.Neutral);
84 item2.hostility = hostility5;
85 item2.enemy = null;
86 }
88 };
89 leader.ShowDialog("_chara", "encounter_mob");
90 }
91 }
92 else
93 {
94 for (int j = 0; j < enemies; j++)
95 {
96 Point nearestPoint = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
97 Chara chara2 = EClass._zone.SpawnMob(nearestPoint, SpawnSetting.Encounter(lv));
98 Hostility hostility2 = (chara2.c_originalHostility = Hostility.Enemy);
99 chara2.hostility = hostility2;
100 chara2.enemy = EClass.pc.party.members.RandomItem();
101 }
102 }
103 if (flag && EClass.rnd(EClass.debug.enable ? 1 : 3) == 0)
104 {
105 Point nearestPoint2 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
106 SpawnList list3 = SpawnListChara.Get("c_metal", (SourceChara.Row s) => s.race == "metal");
108 }
109 if ((EClass._zone.Tile.isRoad || EClass._zone.Tile.IsNeighborRoad) && EClass.rnd(2) == 0)
110 {
111 Point nearestPoint3 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
112 EClass._zone.AddCard(CharaGen.Create("guard"), nearestPoint3);
113 }
114 }
115}
Emo
Definition: Emo.cs:2
Hostility
Definition: Hostility.cs:2
int FameLv
Definition: Card.cs:2158
string id
Definition: Card.cs:31
Card AddCard(Card c)
Definition: Card.cs:2887
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:5949
string Name
Definition: Card.cs:2013
Point pos
Definition: Card.cs:55
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:5372
ThingContainer things
Definition: Card.cs:34
string NameSimple
Definition: Card.cs:2015
int Num
Definition: Card.cs:154
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
Definition: CharaGen.cs:22
static Chara Create(string id, int lv=-1)
Definition: CharaGen.cs:17
Definition: Chara.cs:10
Element MainElement
Definition: Chara.cs:702
void ShowDialog()
Definition: Chara.cs:6368
Party party
Definition: Chara.cs:43
bool HasCondition(string alias)
Definition: Chara.cs:8568
bool enable
Definition: CoreDebug.cs:285
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Zone _zone
Definition: EClass.cs:20
static int rndHalf(int a)
Definition: EClass.cs:74
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
SourceElement.Row source
Definition: ELEMENT.cs:263
static Element Void
Definition: ELEMENT.cs:228
List< Chara > members
Definition: Party.cs:18
void ModKarma(int a)
Definition: Player.cs:2289
Definition: Point.cs:9
Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=2000)
Definition: Point.cs:755
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:741
EloMap.TileInfo Tile
Definition: Spatial.cs:516
static SpawnList Get(string id, Func< SourceChara.Row, bool > func)
static SpawnSetting Encounter(int lv)
Definition: SpawnSetting.cs:72
static SpawnSetting Mob(string id, string idEle=null, int fixedLv=-1)
Definition: SpawnSetting.cs:81
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
Definition: Thing.cs:8
bool isEquipped
Definition: Thing.cs:17
static void MakeBaby(Chara c, int baby)
Chara SpawnMob(Point pos=null, SpawnSetting setting=null)
Definition: Zone.cs:2543
override int DangerLv
Definition: Zone.cs:107
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893