Elin Decompiled Documentation EA 23.290 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, 24f + Mathf.Sqrt(EClass.pc.FameLv));
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 Chara chara3 = EClass._zone.SpawnMob(randomPointInRadius3, SpawnSetting.Mob(mob.id, (mob.MainElement == Element.Void) ? null : mob.MainElement.source.alias.Substring(3)));
58 Hostility hostility2 = (chara3.c_originalHostility = Hostility.Enemy);
59 chara3.hostility = hostility2;
60 chara3.enemy = EClass.pc.party.members.RandomItem();
61 leader = chara3;
62 if (EClass.rnd(5) == 0)
63 {
65 }
66 list.Add(chara3);
67 }
68 }
69 if (leader != null)
70 {
71 List<Thing> list2 = EClass.pc.things.List(delegate(Thing t)
72 {
73 if (t.Num >= 10)
74 {
75 return false;
76 }
77 return t.trait.CanBeDestroyed && t.things.Count == 0 && t.invY != 1 && t.trait.CanBeStolen && !t.trait.CanOnlyCarry && !t.IsUnique && !t.isEquipped;
78 }, onlyAccessible: true);
79 Thing t2 = ((list2.Count > 0) ? list2.RandomItem() : null);
80 if (t2 == null)
81 {
82 GameLang.refDrama1 = (GameLang.refDrama2 = "mobPity".lang());
83 }
84 else
85 {
86 GameLang.refDrama1 = t2.NameSimple;
87 GameLang.refDrama2 = t2.Name;
88 }
89 LayerDrama.refAction1 = delegate
90 {
91 foreach (Chara item in list)
92 {
93 item.ShowEmo(Emo.angry);
94 if (EClass.rnd(6) == 0)
95 {
96 item.Talk((EClass.rnd(5) == 0) ? "rumor_bad" : ((EClass.rnd(5) == 0) ? "callGuards" : "disgust"));
97 }
98 }
99 };
100 LayerDrama.refAction2 = delegate
101 {
102 if (t2 != null)
103 {
104 leader.AddCard(t2);
105 }
106 foreach (Chara item2 in list)
107 {
108 if (EClass.rnd(6) == 0)
109 {
110 item2.Talk((EClass.rnd(5) == 0) ? "rumor_good" : ((EClass.rnd(3) == 0) ? "thanks3" : "thanks"));
111 }
112 item2.ShowEmo(Emo.happy);
113 Hostility hostility6 = (item2.c_originalHostility = Hostility.Neutral);
114 item2.hostility = hostility6;
115 item2.enemy = null;
116 }
118 };
119 leader.ShowDialog("_chara", "encounter_mob");
120 }
121 }
122 }
123 else
124 {
125 for (int k = 0; k < enemies; k++)
126 {
127 Point nearestPoint = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
128 Chara chara4 = EClass._zone.SpawnMob(nearestPoint, SpawnSetting.Encounter(lv));
129 Hostility hostility2 = (chara4.c_originalHostility = Hostility.Enemy);
130 chara4.hostility = hostility2;
131 chara4.enemy = EClass.pc.party.members.RandomItem();
132 }
133 }
134 if (flag && EClass.rnd(EClass.debug.enable ? 1 : 3) == 0)
135 {
136 Point nearestPoint2 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
137 SpawnList list3 = SpawnListChara.Get("c_metal", (SourceChara.Row s) => s.race == "metal");
139 }
140 if ((EClass._zone.Tile.isRoad || EClass._zone.Tile.IsNeighborRoad) && EClass.rnd(2) == 0)
141 {
142 Point nearestPoint3 = (EClass.pc.pos.GetRandomPoint(4) ?? EClass.pc.pos).GetNearestPoint(allowBlock: false, allowChara: false);
143 EClass._zone.AddCard(CharaGen.Create("guard"), nearestPoint3);
144 }
145 }
146}
Emo
Definition: Emo.cs:2
Hostility
Definition: Hostility.cs:2
int FameLv
Definition: Card.cs:2338
string id
Definition: Card.cs:36
Card AddCard(Card c)
Definition: Card.cs:3166
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6965
string Name
Definition: Card.cs:2177
Point pos
Definition: Card.cs:60
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6373
ThingContainer things
Definition: Card.cs:39
string NameSimple
Definition: Card.cs:2179
int Num
Definition: Card.cs:159
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:7195
Party party
Definition: Chara.cs:43
bool HasCondition(string alias)
Definition: Chara.cs:9614
void MakeMinion(Chara _master, MinionType type=MinionType.Default)
Definition: Chara.cs:2400
bool enable
Definition: CoreDebug.cs:286
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:2598
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:74
static SpawnSetting Mob(string id, string idEle=null, int fixedLv=-1)
Definition: SpawnSetting.cs:83
static SpawnSetting TravelMerchant(string id, int fixedLv=-1)
Definition: SpawnSetting.cs:93
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:2798
override int DangerLv
Definition: Zone.cs:110
Card AddCard(Card t, Point point)
Definition: Zone.cs:2017