Elin Decompiled Documentation EA 23.306 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;
22 {
23 lv = Mathf.Max(20, EClass.pc.FameLv * 2);
24 Point randomPointInRadius = EClass.pc.pos.GetRandomPointInRadius(2, 5, requireLos: false, allowChara: false);
25 for (int i = 0; i < EClass.rndHalf(12); i++)
26 {
27 Point randomPointInRadius2 = randomPointInRadius.GetRandomPointInRadius(1, 4, requireLos: false, allowChara: false);
28 if (randomPointInRadius2 != null)
29 {
30 Chara chara = null;
31 if (i == 0)
32 {
33 chara = (leader = EClass._zone.SpawnMob(randomPointInRadius2, SpawnSetting.TravelMerchant(mob.id, lv)));
34 }
35 else
36 {
37 string[] source = new string[5] { "merc", "merc_archer", "merc_mage", "merc_warrior", "dog_hound" };
38 chara = EClass._zone.SpawnMob(randomPointInRadius2, SpawnSetting.Mob(source.RandomItem(), null, lv * 2 / 3));
39 Chara chara2 = chara;
40 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
41 chara2.hostility = hostility2;
42 chara.MakeMinion(leader);
43 }
44 list.Add(chara);
45 }
46 }
47 leader.ShowDialog();
48 }
49 else
50 {
51 float num = Mathf.Clamp(EClass.pc.FameLv + 8, 8f, Mathf.Min(24f + Mathf.Sqrt(EClass.pc.FameLv), 100f));
52 for (int j = 0; j < EClass.rndHalf((int)num); j++)
53 {
54 Point randomPointInRadius3 = EClass.pc.pos.GetRandomPointInRadius(2, 5, requireLos: false, allowChara: false);
55 if (randomPointInRadius3 != null)
56 {
57 bool flag2 = EClass.rnd(5) == 0;
58 Chara chara3 = EClass._zone.SpawnMob(randomPointInRadius3, SpawnSetting.Mob(mob.id, (mob.MainElement == Element.Void) ? null : mob.MainElement.source.alias.Substring(3), -1, (!flag2 && EClass.player.HasKeyItem("license_adv")) ? EClass.rndHalf(EClass.pc.FameLv) : 0));
59 Hostility hostility2 = (chara3.c_originalHostility = Hostility.Enemy);
60 chara3.hostility = hostility2;
61 chara3.enemy = EClass.pc.party.members.RandomItem();
62 leader = chara3;
63 if (flag2)
64 {
66 }
67 list.Add(chara3);
68 }
69 }
70 if (leader != null)
71 {
72 List<Thing> list2 = EClass.pc.things.List(delegate(Thing t)
73 {
74 if (t.Num >= 10)
75 {
76 return false;
77 }
78 return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped;
79 }, onlyAccessible: true);
80 Thing t2 = ((list2.Count > 0) ? list2.RandomItem() : null);
81 if (t2 == null)
82 {
83 GameLang.refDrama1 = (GameLang.refDrama2 = "mobPity".lang());
84 }
85 else
86 {
87 GameLang.refDrama1 = t2.NameSimple;
88 GameLang.refDrama2 = t2.Name;
89 }
90 LayerDrama.refAction1 = delegate
91 {
92 foreach (Chara item in list)
93 {
94 item.ShowEmo(Emo.angry);
95 if (EClass.rnd(6) == 0)
96 {
97 item.Talk((EClass.rnd(5) == 0) ? "rumor_bad" : ((EClass.rnd(5) == 0) ? "callGuards" : "disgust"));
98 }
99 }
100 };
101 LayerDrama.refAction2 = delegate
102 {
103 if (t2 != null)
104 {
105 leader.AddCard(t2);
106 }
107 foreach (Chara item2 in list)
108 {
109 if (EClass.rnd(6) == 0)
110 {
111 item2.Talk((EClass.rnd(5) == 0) ? "rumor_good" : ((EClass.rnd(3) == 0) ? "thanks3" : "thanks"));
112 }
113 item2.ShowEmo(Emo.happy);
114 Hostility hostility6 = (item2.c_originalHostility = Hostility.Neutral);
115 item2.hostility = hostility6;
116 item2.enemy = null;
117 }
119 };
120 leader.ShowDialog("_chara", "encounter_mob");
121 }
122 }
123 }
124 else
125 {
126 for (int k = 0; k < enemies; k++)
127 {
128 Point nearestPoint = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
129 Chara chara4 = EClass._zone.SpawnMob(nearestPoint, SpawnSetting.Encounter(lv));
130 Hostility hostility2 = (chara4.c_originalHostility = Hostility.Enemy);
131 chara4.hostility = hostility2;
132 chara4.enemy = EClass.pc.party.members.RandomItem();
133 }
134 }
135 if (flag && EClass.rnd(EClass.debug.enable ? 1 : 3) == 0)
136 {
137 Point nearestPoint2 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
138 SpawnList list3 = SpawnListChara.Get("c_metal", (SourceChara.Row s) => s.race == "metal");
140 }
141 if ((EClass._zone.Tile.isRoad || EClass._zone.Tile.IsNeighborRoad) && EClass.rnd(2) == 0)
142 {
143 Point nearestPoint3 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
144 EClass._zone.AddCard(CharaGen.Create("guard"), nearestPoint3);
145 }
146 }
147}
Emo
Definition: Emo.cs:2
Hostility
Definition: Hostility.cs:2
int FameLv
Definition: Card.cs:2340
string id
Definition: Card.cs:36
Card AddCard(Card c)
Definition: Card.cs:3168
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7032
string Name
Definition: Card.cs:2179
Point pos
Definition: Card.cs:60
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6440
ThingContainer things
Definition: Card.cs:39
string NameSimple
Definition: Card.cs:2181
int Num
Definition: Card.cs:161
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:731
new TraitChara trait
Definition: Chara.cs:505
void ShowDialog()
Definition: Chara.cs:7230
Party party
Definition: Chara.cs:43
bool HasCondition(string alias)
Definition: Chara.cs:9687
void MakeMinion(Chara _master, MinionType type=MinionType.Default)
Definition: Chara.cs:2406
bool enable
Definition: CoreDebug.cs:301
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:21
static int rnd(long a)
Definition: EClass.cs:59
static int rndHalf(int a)
Definition: EClass.cs:97
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
static CoreDebug debug
Definition: EClass.cs:49
SourceElement.Row source
Definition: ELEMENT.cs:278
static Element Void
Definition: ELEMENT.cs:243
List< Chara > members
Definition: Party.cs:19
void ModKarma(int a)
Definition: Player.cs:2610
bool HasKeyItem(string alias)
Definition: Player.cs:2235
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:783
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:769
EloMap.TileInfo Tile
Definition: Spatial.cs:530
static SpawnList Get(string id, Func< SourceChara.Row, bool > func)
static SpawnSetting Encounter(int lv)
Definition: SpawnSetting.cs:76
static SpawnSetting Mob(string id, string idEle=null, int fixedLv=-1, int addLv=0)
Definition: SpawnSetting.cs:85
static SpawnSetting TravelMerchant(string id, int fixedLv=-1)
Definition: SpawnSetting.cs:96
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(string id, Point pos=null)
Definition: Zone.cs:2816
override int DangerLv
Definition: Zone.cs:110
Card AddCard(Card t, Point point)
Definition: Zone.cs:2017