Elin Decompiled Documentation EA 23.197 Nightly Patch 1
Loading...
Searching...
No Matches
AI_PlayMusic Class Reference
Inheritance diagram for AI_PlayMusic:
AIAct Act Element EClass

Public Member Functions

override IEnumerable< StatusRun ()
 
void Evaluate (bool success)
 
void ThrowReward (Chara c, bool punish)
 
override void OnCancel ()
 
- Public Member Functions inherited from AIAct
override string ToString ()
 
override MultiSprite GetStateIcon ()
 
virtual bool ShouldAllyAttack (Chara tg)
 
virtual Point GetDestination ()
 
AIProgress GetProgress ()
 
string GetCurrentActionText ()
 
override bool IsToolValid ()
 
virtual void OnStart ()
 
void SetOwner (Chara c)
 
virtual void OnSetOwner ()
 
void SetChild (AIAct seq, Func< Status > _onChildFail=null)
 
void Start ()
 
override bool Perform ()
 
Status Restart ()
 
Status Success (Action action=null)
 
virtual void OnSuccess ()
 
bool TryCancel (Card c)
 
virtual Status Cancel ()
 
virtual void OnCancel ()
 
virtual void OnCancelOrSuccess ()
 
virtual bool CanManualCancel ()
 
Status KeepRunning ()
 
void Reset ()
 
virtual void OnReset ()
 
Status Tick ()
 
virtual IEnumerable< StatusRun ()
 
Status TickChild ()
 
Status Do (AIAct _seq, Func< Status > _onChildFail=null)
 
Status DoGotoInteraction (Point pos, Func< Status > _onChildFail=null)
 
Status DoGoto (Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
 
Status DoGoto (Card card, Func< Status > _onChildFail=null)
 
Status DoGoto (Card card, int dist, Func< Status > _onChildFail=null)
 
Status DoGotoSpot (Card card, Func< Status > _onChildFail=null)
 
Status DoGoto< T > (Func< Status > _onChildFail=null)
 
Status DoGotoSpot< T > (Func< Status > _onChildFail=null, bool ignoreAccessType=false)
 
Status DoGrab (Card card, int num=-1, bool pickHeld=false, Func< Status > _onChildFail=null)
 
Status DoGrab< T > ()
 
Status DoProgress ()
 
Status DoIdle (int repeat=3)
 
Status DoWait (int count=1)
 
virtual AIProgress CreateProgress ()
 
virtual void OnCreateProgress (Progress_Custom p)
 
virtual bool CanProgress ()
 
virtual void OnBeforeProgress ()
 
virtual void OnProgress ()
 
virtual void OnProgressComplete ()
 
void SimulateZone (int days)
 
virtual void OnSimulateZone (int days)
 
virtual void OnSimulatePosition ()
 
- Public Member Functions inherited from Act
virtual CursorInfo GetCursorIcon (Card c)
 
virtual MultiSprite GetStateIcon ()
 
override Sprite GetSprite ()
 
virtual bool ShowMouseHint (Card c)
 
virtual bool IsValidTC (Card c)
 
virtual string GetHintText (string str="")
 
virtual string GetText (string str="")
 
virtual string GetTextSmall (Card c)
 
bool IsTargetHostileParty ()
 
virtual Color GetActPlanColor ()
 
virtual bool Perform ()
 
virtual bool CanPerform ()
 
bool Perform (Chara _cc, Card _tc=null, Point _tp=null)
 
bool CanPerform (Chara _cc, Card _tc=null, Point _tp=null)
 
virtual bool IsToolValid ()
 
new void SetImage (Image image)
 
virtual void OnMarkMapHighlights ()
 
virtual bool ShouldMapHighlight (Point p)
 
- Public Member Functions inherited from Element
virtual SourceElement.Row GetSource ()
 
virtual int GetSourcePotential (int v)
 
virtual Sprite GetSprite ()
 
int GetMaterialSourceValue (Thing t, int v)
 
virtual int GetSourceValue (int v, int lv, SourceValueType type)
 
virtual Sprite GetIcon (string suffix="")
 
bool IsActive (Card c)
 
int SortVal (bool charaSheet=false)
 
virtual bool CanLink (ElementContainer owner)
 
bool HasTag (string tag)
 
void SetImage (Image i)
 
virtual string GetDetail ()
 
bool IsFactionElement (Chara c)
 
Element GetParent (Card c)
 
void WriteNote (UINote n, ElementContainer owner=null, Action< UINote > onWriteNote=null)
 
void WriteNoteWithRef (UINote n, ElementContainer owner, Action< UINote > onWriteNote, Element refEle)
 
void _WriteNote (UINote n, Chara c, Act act)
 
void AddHeaderAbility (UINote n)
 
void _WriteNote (UINote n, ElementContainer owner, Action< UINote > onWriteNote, bool isRef, bool addHeader=true)
 
void AddEncNote (UINote n, Card Card, ElementContainer.NoteMode mode=ElementContainer.NoteMode.Default, Func< Element, string, string > funcText=null, Action< UINote, Element > onAddNote=null)
 
virtual void OnWriteNote (UINote n, ElementContainer owner)
 
virtual void OnChangeValue ()
 
void CheckLevelBonus (ElementContainer owner, UINote n=null)
 
int GetSortVal (UIList.SortMode m)
 
virtual Act.Cost GetCost (Chara c)
 
virtual int GetPower (Card c)
 
virtual void SetTextValue (UIText text)
 
virtual bool IsPurchaseFeatReqMet (ElementContainer owner, int lv=-1)
 
virtual void WritePurchaseReq (UINote n, int lv=1)
 

Static Public Member Functions

static void CancelKeepPlaying ()
 
- Static Public Member Functions inherited from Act
static void SetReference (Chara _cc, Card _tc=null, Point _tp=null)
 
static void SetTool (Thing t)
 
- Static Public Member Functions inherited from Element
static string GetName (string alias)
 
static SourceElement.Row Get (int id)
 
static Dictionary< int, int > GetElementMap (int[] list)
 
static Dictionary< int, int > GetElementMap (int[] list, Dictionary< int, int > map)
 
static SourceElement.Row GetRandomElement (int lv=1, bool useWeight=true)
 
static Element Create (int id, int v=0)
 
static Element Create (string id, int v=1)
 
static int GetId (string alias)
 
static int GetResistLv (int v)
 
static int GetResistDamage (int dmg, int v, int power=0)
 
- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

Thing tool
 
PlayingSong playing
 
int score
 
int gold
 
int toolLv
 
- Public Attributes inherited from AIAct
new Chara owner
 
Status status
 
IEnumerator< StatusEnumerator
 
AIAct child
 
AIAct parent
 
byte restartCount
 
Func< StatusonChildFail
 
Func< bool > isFail
 
- Public Attributes inherited from Element
SourceElement.Row _source
 
int id
 
int vBase
 
int vExp
 
int vPotential
 
int vTempPotential
 
int vLink
 
int vSource
 
int vSourcePotential
 
ElementContainer owner
 

Static Public Attributes

static bool keepPlaying
 
static Thing playingTool
 
static bool ignoreDamage
 
- Static Public Attributes inherited from Act
static Chara CC
 
static Card TC
 
static Point TP = new Point()
 
static Thing TOOL
 
static int powerMod = 100
 
static bool forcePt
 
static Act CurrentAct
 
- Static Public Attributes inherited from Element
const int Div = 5
 
static Element Void = new Element()
 
static int[] List_MainAttributes = new int[9] { 70, 72, 71, 77, 74, 75, 76, 73, 79 }
 
static int[] List_MainAttributesMajor = new int[8] { 70, 72, 71, 77, 74, 75, 76, 73 }
 
static int[] List_Body = new int[4] { 70, 72, 71, 77 }
 
static int[] List_Mind = new int[4] { 74, 75, 76, 73 }
 
static List< SourceElement.RowListElements = new List<SourceElement.Row>()
 
static List< SourceElement.RowListAttackElements = new List<SourceElement.Row>()
 
- Static Public Attributes inherited from EClass
static Core core
 

Properties

override bool ShowProgress [get]
 
override bool CancelWhenDamaged [get]
 
override TargetType TargetType [get]
 
- Properties inherited from AIAct
virtual bool IsRunning [get]
 
bool IsChildRunning [get]
 
bool IsMoveAI [get]
 
virtual int MaxRestart [get]
 
virtual new string Name [get]
 
virtual MultiSprite stateIcon [get]
 
virtual Sprite actionIcon [get]
 
virtual bool IsNoGoal [get]
 
virtual bool IsAutoTurn [get]
 
virtual bool IsIdle [get]
 
virtual bool CancelOnAggro [get]
 
virtual bool PushChara [get]
 
virtual int MaxProgress [get]
 
virtual bool ShowProgress [get]
 
virtual bool UseTurbo [get]
 
virtual int CurrentProgress [get]
 
virtual bool ShowCursor [get]
 
virtual bool CancelWhenDamaged [get]
 
virtual bool CancelWhenMoved [get]
 
virtual bool InformCancel [get]
 
virtual Thing RenderThing [get]
 
AIAct Current [get]
 
override bool IsAct [get]
 
override bool ShowPotential [get]
 
override bool UsePotential [get]
 
override bool ShowRelativeAttribute [get]
 
virtual bool HasProgress [get]
 
- Properties inherited from Act
override bool ShowPotential [get]
 
override bool UsePotential [get]
 
override bool ShowRelativeAttribute [get]
 
virtual CursorInfo CursorIcon [get]
 
virtual string ID [get]
 
virtual bool IsAct [get]
 
virtual bool WillEndTurn [get]
 
virtual bool CloseLayers [get]
 
virtual int LeftHand [get]
 
virtual int RightHand [get]
 
virtual int ElementPowerMod [get]
 
virtual bool ShowMapHighlight [get]
 
virtual bool ShowMapHighlightBlock [get]
 
virtual bool PickHeldOnStart [get]
 
virtual bool DropHeldOnStart [get]
 
virtual bool CanPressRepeat [get]
 
virtual bool CanAutofire [get]
 
virtual bool ResetAxis [get]
 
virtual bool RequireTool [get]
 
virtual bool IsHostileAct [get]
 
virtual bool HideRightInfo [get]
 
virtual bool HaveLongPressAction [get]
 
virtual float Radius [get]
 
virtual int PerformDistance [get]
 
virtual int MaxRadius [get]
 
virtual TargetType TargetType [get]
 
virtual bool LocalAct [get]
 
virtual bool CanRapidFire [get]
 
virtual float RapidDelay [get]
 
virtual bool ShowAuto [get]
 
virtual bool IsCrime [get]
 
- Properties inherited from Element
SourceElement.Row source [get]
 
virtual int DisplayValue [get]
 
virtual int MinValue [get]
 
int Value [get]
 
int ValueWithoutLink [get]
 
virtual int MinPotential [get]
 
int Potential [get]
 
virtual bool CanGainExp [get]
 
bool IsFlag [get]
 
virtual string Name [get]
 
virtual string FullName [get]
 
virtual int ExpToNext [get]
 
virtual bool UseExpMod [get]
 
virtual int CostTrain [get]
 
virtual int CostLearn [get]
 
virtual bool ShowXP [get]
 
virtual bool ShowMsgOnValueChanged [get]
 
virtual bool ShowValue [get]
 
virtual bool ShowPotential [get]
 
virtual bool UsePotential [get]
 
virtual bool PotentialAsStock [get]
 
virtual bool ShowRelativeAttribute [get]
 
virtual bool ShowBonuses [get]
 
virtual string ShortName [get]
 
bool IsGlobalElement [get]
 
bool IsFactionWideElement [get]
 
bool IsPartyWideElement [get]
 
virtual bool ShowEncNumber [get]
 
bool IsTrait [get]
 
bool IsFoodTrait [get]
 
bool IsFoodTraitMain [get]
 
bool IsMainAttribute [get]
 
Act act [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Public Types inherited from AIAct
enum  Status { Running , Fail , Success }
 
- Public Types inherited from Act
enum  CostType { None , MP , SP }
 

Detailed Description

Definition at line 6 of file AI_PlayMusic.cs.

Member Function Documentation

◆ CancelKeepPlaying()

static void AI_PlayMusic.CancelKeepPlaying ( )
inlinestatic

Definition at line 40 of file AI_PlayMusic.cs.

41 {
42 if (keepPlaying)
43 {
44 SE.CancelAction();
45 keepPlaying = false;
46 playingTool = null;
47 }
48 }
static Thing playingTool
Definition: AI_PlayMusic.cs:10
static bool keepPlaying
Definition: AI_PlayMusic.cs:8

References keepPlaying, and playingTool.

Referenced by AM_Adv._OnUpdateInput(), and Scene.OnUpdate().

◆ Evaluate()

void AI_PlayMusic.Evaluate ( bool  success)
inline

Definition at line 421 of file AI_PlayMusic.cs.

422 {
423 if (owner == null || !owner.IsPC)
424 {
425 return;
426 }
427 if (success)
428 {
429 score = score * 110 / 100;
430 }
431 else
432 {
433 score = score / 2 - 20;
434 }
435 int num = Mathf.Clamp(score / 20 + 1, 0, 9);
436 owner.Say(Lang.GetList("music_result")[num]);
437 if (gold > 0)
438 {
439 owner.Say("music_reward", owner, gold.ToString() ?? "");
440 }
441 if (EClass.rnd(3) != 0)
442 {
443 owner.stamina.Mod(-1);
444 }
445 QuestMusic questMusic = EClass.game.quests.Get<QuestMusic>();
446 if (questMusic != null)
447 {
448 questMusic.score += score;
449 questMusic.sumMoney += gold;
450 int num2 = num / 2 - 1;
451 if (num > 0)
452 {
453 SE.Play("clap" + num2);
454 }
455 }
456 }
new Chara owner
Definition: AIAct.cs:14
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6586
override bool IsPC
Definition: Chara.cs:610
Stats stamina
Definition: Chara.cs:1128
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static int rnd(long a)
Definition: EClass.cs:58
QuestManager quests
Definition: Game.cs:179
Definition: Lang.cs:6
static string[] GetList(string id)
Definition: Lang.cs:114
Quest Get(string id)
virtual void Mod(int a)
Definition: Stats.cs:135

References EClass.game, QuestManager.Get(), Lang.GetList(), Game.quests, and EClass.rnd().

Referenced by Run().

◆ OnCancel()

override void AI_PlayMusic.OnCancel ( )
inlinevirtual

Reimplemented from AIAct.

Definition at line 587 of file AI_PlayMusic.cs.

588 {
589 if (playing != null && (bool)playing.bgm)
590 {
591 playing.bgm.song.Fail(playing.source, playing.bgm);
592 if ((bool)UISong.Instance)
593 {
595 }
596 playing.source = null;
597 SoundManager.jingleTimer = 1f;
598 }
599 Evaluate(success: false);
600 }
void Evaluate(bool success)
PlayingSong playing
Definition: AI_PlayMusic.cs:16
SoundSource source
Definition: PlayingSong.cs:13
BGMData bgm
Definition: PlayingSong.cs:11
Definition: UISong.cs:5
void Kill()
Definition: UISong.cs:69
static UISong Instance
Definition: UISong.cs:6

References PlayingSong.bgm, UISong.Instance, UISong.Kill(), and PlayingSong.source.

◆ Run()

override IEnumerable< Status > AI_PlayMusic.Run ( )
inlinevirtual

Reimplemented from AIAct.

Definition at line 50 of file AI_PlayMusic.cs.

51 {
52 if (tool == null)
53 {
54 tool = (owner.IsPC ? owner.Tool : owner.things.Find<TraitToolMusic>());
55 }
56 if (tool == null && !owner.IsPCFaction && EClass.rnd(20) == 0)
57 {
59 }
60 if (tool == null)
61 {
62 yield return Cancel();
63 }
64 if (tool.parent is Zone)
65 {
66 yield return DoGoto(tool.pos, tool.pos.IsBlocked ? 1 : 0);
67 }
69 {
70 keepPlaying = true;
72 EInput.Consume(consumeAxis: true, 10);
73 }
74 toolLv = 1;
75 string idSong = null;
76 KnownSong song = null;
77 playing = null;
78 score = 40;
79 gold = 0;
81 {
83 idSong = EClass.player.playingSong.id;
85 }
86 if (playing == null)
87 {
88 switch (tool.id)
89 {
90 case "trumpet":
91 idSong = "trumpet_practice";
92 break;
93 case "piano_gould":
94 idSong = "piano_gould";
95 break;
96 case "piano_killkill":
97 case "piano2":
98 idSong = "piano_neko";
99 break;
100 case "piano":
101 idSong = "piano_kanon";
102 break;
103 case "harpsichord":
104 idSong = "harpsichord_goldberg";
105 break;
106 case "guitar_ash":
107 idSong = "guitar_caccini";
108 break;
109 case "guitar_efrond":
110 idSong = "guitar_dusk";
111 break;
112 case "guitar":
113 idSong = "guitar_air";
114 break;
115 case "harp":
116 idSong = "harp_komori";
117 break;
118 case "shield_lute":
119 case "lute":
120 idSong = "guitar_sad";
121 break;
122 case "recorder":
123 idSong = "recorder";
124 break;
125 case "flute":
126 idSong = "flute";
127 break;
128 case "taiko":
129 idSong = "taiko";
130 break;
131 case "mokugyo":
132 idSong = "mokugyo";
133 break;
134 case "tambourine":
135 idSong = "tambourine";
136 break;
137 case "mic":
138 idSong = "mic_rachmaninoff";
139 break;
140 case "cello":
141 idSong = "cello_prelude";
142 break;
143 case "instrument_violin":
144 case "panty":
145 idSong = "violin_chaconne";
146 break;
147 case "stradivarius":
148 idSong = "violin_furusato";
149 break;
150 default:
151 idSong = "violin_chaconne";
152 break;
153 }
154 if (owner.IsPC && EClass.player.knownSongs.ContainsKey(idSong))
155 {
156 song = EClass.player.knownSongs[idSong];
157 }
158 if (song == null)
159 {
160 song = new KnownSong();
161 if (owner.IsPC)
162 {
163 EClass.player.knownSongs[idSong] = song;
164 }
165 }
166 playing = new PlayingSong
167 {
168 id = idSong,
169 idTool = tool.id
170 };
171 if (owner.IsPC)
172 {
173 EClass.player.playingSong = playing;
174 }
175 }
176 if (owner.IsPC)
177 {
178 (EClass.Sound.GetData("Instrument/" + idSong) as BGMData).song.index = playing.index;
179 }
180 if (Application.isEditor && owner.IsPC)
181 {
182 song.lv += 10;
183 Debug.Log(song.lv);
184 }
185 List<Chara> reacted = new List<Chara>();
186 Progress_Custom progress = new Progress_Custom
187 {
188 maxProgress = 15,
189 cancelWhenMoved = false,
190 showProgress = false,
191 canProgress = () => tool != null && !tool.isDestroyed,
192 onProgressBegin = delegate
193 {
194 owner.Say("music_start", owner, tool);
195 owner.ShowEmo(Emo.happy, 3f, skipSame: false);
196 if (tool != null && tool.ExistsOnMap)
197 {
199 }
200 owner.PlayAnime(AnimeID.PlayMusic);
201 if (owner.IsPC)
202 {
203 bool flag = false;
204 if (playing.mistakes == 0 && (bool)playing.source && playing.source.isPlaying && playing.source.data.name == idSong)
205 {
206 SoundSource soundSource = playing.source;
207 if (Mathf.Abs(soundSource.source.time - (soundSource.data as BGMData).song.parts[playing.index].start) < 2f && playing.source.source.volume >= 0.1f)
208 {
209 soundSource.KeepPlay();
210 flag = true;
211 Debug.Log("keep:" + soundSource.source.time);
212 }
213 else
214 {
215 EClass.Sound.Stop(soundSource.data, 0.1f);
216 }
217 Debug.Log(playing.source);
218 }
219 if (!flag)
220 {
221 playing.source = owner.PlaySound("Instrument/" + idSong);
222 Debug.Log(playing.source);
223 }
224 playing.bgm = playing.source.data as BGMData;
225 BGMData.Part part = playing.bgm.song.parts[playing.index];
226 if (!UISong.Instance)
227 {
228 Util.Instantiate<UISong>("UI/Util/UISong", EClass.ui.rectDynamicEssential);
229 }
231 if (EClass.Sound.currentBGM != null)
232 {
233 float num3 = 0.5f - 0.1f * (float)playing.index;
234 if (num3 < 0f)
235 {
236 num3 = 0f;
237 }
238 if (EClass.Sound.sourceBGM.volume > EClass.Sound.currentBGM.data.volume * num3)
239 {
240 EClass.Sound.sourceBGM.DOFade(EClass.Sound.currentBGM.data.volume * num3, 3f);
241 }
242 SoundManager.jingleTimer = part.duration / playing.bgm.pitch + playing.bgm.song.fadeIn + 2f;
243 }
244 }
245 },
246 onProgress = delegate(Progress_Custom p)
247 {
249 owner.Say(Lang.GetList("music").RandomItem());
250 Msg.SetColor();
251 if (tool.id == "tambourine")
252 {
253 Msg.Say("tambourine");
254 }
255 if (EClass.debug.enable && EClass.pc.job.id == "pianist")
256 {
257 song.lv = 10000;
258 }
259 if (p.progress > 2 && (EClass.rnd(100 + 50 * owner.Evalue(1405)) == 0 || EClass.rnd(4 + (int)MathF.Max(0f, song.lv - playing.index * 25 - playing.index * playing.index / 2)) == 0))
260 {
262 if (EClass.rnd(2) == 0)
263 {
264 LevelSong(2 + 2 * EClass.rnd(owner.Evalue(1405) + 1));
265 }
266 if (playing.mistakes >= 10)
267 {
268 playing.index = 0;
269 }
270 Cancel();
271 }
272 else
273 {
275 {
276 if (item.conSleep != null && item.ResistLv(957) <= 0)
277 {
278 item.conSleep.Kill();
279 item.ShowEmo(Emo.angry);
280 }
281 }
282 List<Chara> list = owner.pos.ListWitnesses(owner, 4, WitnessType.music);
283 int num = owner.Evalue(241) * (100 + toolLv) / 100;
284 int num2 = 0;
285 foreach (Chara item2 in list)
286 {
287 if (owner == null)
288 {
289 break;
290 }
291 if (!reacted.Contains(item2) && EClass.rnd(5) == 0)
292 {
293 if (tool != null)
294 {
295 foreach (Element value in tool.elements.dict.Values)
296 {
297 if (value.id == 489 && EClass.rnd(8) == 0)
298 {
299 item2.AddCondition<ConDrunk>();
300 }
301 if (value.source.categorySub == "eleAttack")
302 {
303 item2.ApplyElementEffect(value, value.Value * 10, owner, checkHostileAct: true);
304 }
305 }
306 }
307 if (owner.IsPCParty)
308 {
309 if (item2.interest <= 0 || (EClass._zone is Zone_Music && (item2.IsPCFaction || item2.IsPCFactionMinion)))
310 {
311 continue;
312 }
313 if (!item2.isDrunk)
314 {
315 item2.interest -= EClass.rnd(10);
316 if (item2.interest < 0)
317 {
318 item2.Talk("musicBored");
319 continue;
320 }
321 }
322 }
323 if (EClass.rnd(num2 * num2) <= 30 && item2.pos.FirstChara == item2)
324 {
325 bool isMinion = item2.IsMinion;
326 p.cancelWhenDamaged = false;
327 if (num < item2.LV && EClass.rnd(2) == 0)
328 {
329 reacted.Add(item2);
330 if (!isMinion)
331 {
332 score -= item2.LV / 2 - 10;
333 }
334 if (EClass.rnd(2) == 0)
335 {
336 item2.Talk("musicBad");
337 }
338 else
339 {
340 item2.Say("musicBad", item2, owner);
341 }
342 item2.ShowEmo(Emo.sad);
343 owner.elements.ModExp(241, 10f);
344 if (EClass.rnd(5) == 0)
345 {
346 ThrowReward(item2, punish: true);
347 }
348 num2++;
349 }
350 else if (EClass.rnd(num + 5) > EClass.rnd(item2.LV * 5 + 1))
351 {
352 reacted.Add(item2);
353 if (!isMinion)
354 {
355 score += EClass.rnd(item2.LV / 2 + 5) + 5;
356 }
357 if (EClass.rnd(2) == 0)
358 {
359 item2.Talk("musicGood");
360 }
361 else
362 {
363 item2.Say("musicGood", item2, owner);
364 }
365 item2.ShowEmo(Emo.happy);
366 item2.renderer.PlayAnime((EClass.rnd(2) == 0) ? AnimeID.Jump : AnimeID.Fishing);
367 owner.elements.ModExp(241, EClass._zone.IsUserZone ? 10 : 50);
368 if (!isMinion)
369 {
370 ThrowReward(item2, punish: false);
371 }
372 num2++;
373 }
374 p.cancelWhenDamaged = true;
375 }
376 }
377 }
378 if (owner != null && owner.IsPC && EClass.rnd(80) < num2)
379 {
380 owner.stamina.Mod(-1);
381 }
382 }
383 },
384 onProgressComplete = delegate
385 {
386 if (EClass.rnd(2) == 0)
387 {
388 LevelSong(2);
389 }
390 if ((bool)playing.bgm)
391 {
392 playing.index++;
393 playing.mistakes = 0;
394 if (playing.index >= playing.bgm.song.parts.Count)
395 {
396 playing.index = 0;
397 }
398 playing.bgm.song.index = playing.index;
399 }
400 Evaluate(success: true);
401 }
402 }.SetDuration(26);
403 yield return Do(progress);
404 if (progress.status == Status.Fail)
405 {
406 yield return Cancel();
407 }
408 void LevelSong(int a)
409 {
410 if (a > 0)
411 {
412 song.lv += a + EClass.rnd(2);
413 if (owner == EClass.pc)
414 {
415 Msg.Say("level_song");
416 }
417 }
418 }
419 }
AnimeID
Definition: AnimeID.cs:2
Emo
Definition: Emo.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
WitnessType
Definition: WitnessType.cs:2
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Definition: AIAct.cs:416
virtual Status Cancel()
Definition: AIAct.cs:291
Status status
Definition: AIAct.cs:16
Status
Definition: AIAct.cs:8
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
int progress
Definition: AIProgress.cs:5
void ThrowReward(Chara c, bool punish)
void PlayAnime(AnimeID id, bool force)
bool isDestroyed
Definition: Card.cs:73
ElementContainerCard elements
Definition: Card.cs:39
string id
Definition: Card.cs:33
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5939
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3057
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6489
ICardParent parent
Definition: Card.cs:53
bool ExistsOnMap
Definition: Card.cs:2047
void ApplyElementEffect(Element e, int eleP, Card origin, bool checkHostileAct=false)
Definition: Card.cs:4704
Point pos
Definition: Card.cs:57
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:5907
ThingContainer things
Definition: Card.cs:36
int Evalue(int ele)
Definition: Card.cs:2533
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:5958
CardRenderer renderer
Definition: Card.cs:59
int LV
Definition: Card.cs:372
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:8871
bool isDrunk
Definition: Chara.cs:124
SourceJob.Row job
Definition: Chara.cs:464
override bool IsPCParty
Definition: Chara.cs:613
int interest
Definition: Chara.cs:315
override bool IsMinion
Definition: Chara.cs:625
override bool IsPCFaction
Definition: Chara.cs:669
override bool IsPCFactionMinion
Definition: Chara.cs:653
override void LookAt(Card c)
Definition: Chara.cs:3474
bool enable
Definition: CoreDebug.cs:286
static Zone _zone
Definition: EClass.cs:20
static Map _map
Definition: EClass.cs:18
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static SoundManager Sound
Definition: EClass.cs:46
static UI ui
Definition: EClass.cs:16
Definition: EInput.cs:8
static void Consume(int _skipFrame)
Definition: EInput.cs:656
void ModExp(int ele, float a, bool chain=false)
Dictionary< int, Element > dict
int id
Definition: ELEMENT.cs:250
SourceElement.Row source
Definition: ELEMENT.cs:273
int Value
Definition: ELEMENT.cs:292
ConfigPreference preference
Definition: Game.cs:96
Config config
Definition: Game.cs:215
int lv
Definition: KnownSong.cs:6
List< Chara > ListCharasInCircle(Point center, float radius, bool los=true)
Definition: Map.cs:2291
Color Ono
Definition: MsgColors.cs:13
Definition: Msg.cs:5
static MsgColors colors
Definition: Msg.cs:20
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
static void SetColor()
Definition: Msg.cs:22
Dictionary< string, KnownSong > knownSongs
Definition: Player.cs:990
PlayingSong playingSong
Definition: Player.cs:1163
string idTool
Definition: PlayingSong.cs:5
string id
Definition: PlayingSong.cs:3
int mistakes
Definition: PlayingSong.cs:9
List< Chara > ListWitnesses(Chara criminal, int radius=4, WitnessType type=WitnessType.crime, Chara target=null)
Definition: Point.cs:818
bool IsBlocked
Definition: Point.cs:351
Thing Find(int uid)
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
void SetSong(SoundSource _source, BGMData _bgm, BGMData.Part _part)
Definition: UISong.cs:29
Definition: Util.cs:10
static Transform Instantiate(string path, Component parent=null)
Definition: Util.cs:67
Definition: Zone.cs:12
virtual bool IsUserZone
Definition: Zone.cs:266

References EClass._map, EClass._zone, Chara.AddCondition(), Card.AddThing(), Card.ApplyElementEffect(), PlayingSong.bgm, AIAct.Cancel(), Msg.colors, Game.config, EInput.Consume(), ThingGen.Create(), EClass.debug, Debug, ElementContainer.dict, AIAct.DoGoto(), Card.elements, CoreDebug.enable, Evaluate(), Card.Evalue(), Card.ExistsOnMap, ThingContainer.Find(), EClass.game, Lang.GetList(), gold, Card.id, Element.id, PlayingSong.id, PlayingSong.idTool, if(), PlayingSong.index, UISong.Instance, Chara.interest, Point.IsBlocked, Card.isDestroyed, Chara.isDrunk, Chara.IsMinion, Chara.IsPC, Chara.IsPCFaction, Chara.IsPCFactionMinion, Chara.IsPCParty, Zone.IsUserZone, item, Chara.job, keepPlaying, ConfigPreference.keepPlayingMusic, Player.knownSongs, Map.ListCharasInCircle(), Point.ListWitnesses(), Chara.LookAt(), Card.LV, KnownSong.lv, PlayingSong.mistakes, Stats.Mod(), ElementContainer.ModExp(), MsgColors.Ono, AIAct.owner, Card.parent, EClass.pc, CardRenderer.PlayAnime(), Card.PlayAnime(), EClass.player, playing, Player.playingSong, playingTool, Card.PlaySound(), Card.pos, Game.Config.preference, AIProgress.progress, Card.renderer, EClass.rnd(), Msg.Say(), Card.Say(), score, Msg.SetColor(), UISong.SetSong(), Card.ShowEmo(), EClass.Sound, Element.source, PlayingSong.source, Chara.stamina, Card.Talk(), Card.things, ThrowReward(), tool, toolLv, EClass.ui, Util, and Element.Value.

◆ ThrowReward()

void AI_PlayMusic.ThrowReward ( Chara  c,
bool  punish 
)
inline

Definition at line 458 of file AI_PlayMusic.cs.

459 {
460 Thing thing = null;
461 string text = "";
462 int num = 1;
463 bool flag = true;
464 if (punish)
465 {
466 text = ((EClass.rnd(5) == 0) ? "rock" : "pebble");
467 if (EClass.rnd(8) == 0)
468 {
469 text = ((EClass.rnd(3) == 0) ? "water_dirty" : "water");
470 }
471 if (!c.IsPCFactionOrMinion)
472 {
473 thing = c.TryGetThrowable()?.Split(1);
474 }
475 }
476 else if (EClass.rnd(100) == 0 && !EClass._zone.IsUserZone)
477 {
478 text = "ecopo";
479 if (EClass.rnd(4) == 0)
480 {
481 text = "gacha_coin";
482 }
483 if (EClass.rnd(4) == 0)
484 {
485 text = "plat";
486 }
487 if (EClass.rnd(3) == 0)
488 {
489 text = "tomato";
490 }
491 if (EClass.rnd(3) == 0)
492 {
493 text = "casino_coin";
494 }
496 {
497 if (c.LV >= 20 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_killkill + 1)) == 0)
498 {
499 text = "piano_killkill";
500 punish = true;
501 flag = false;
503 }
504 else if (c.LV >= 40 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_gould + 1)) == 0)
505 {
506 text = "piano_gould";
507 punish = true;
508 flag = false;
510 }
511 }
512 }
513 else
514 {
515 num = (EClass.rnd(c.LV * 2 + 1) + 1) * (100 + toolLv * 2 + owner.Evalue(1405) * 10) / 100;
516 if (c.IsUnique)
517 {
518 num *= 2;
519 }
520 if (!(EClass._zone is Zone_Music))
521 {
522 if (num > 25)
523 {
524 num /= 2;
525 }
526 if (num > 50)
527 {
528 num /= 2;
529 }
530 if (num > 100)
531 {
532 num /= 2;
533 }
535 {
536 num /= 5;
537 }
538 }
539 if (num < 1)
540 {
541 num = 1;
542 }
543 gold += num;
544 text = "money";
545 }
546 if (!owner.IsPCParty && !punish && text != "money")
547 {
548 return;
549 }
550 if (thing == null)
551 {
552 thing = ThingGen.Create(text).SetNum(num);
553 }
554 ignoreDamage = true;
555 ActThrow.Throw(c, owner.pos, thing, (!punish) ? ThrowMethod.Reward : ThrowMethod.Punish);
556 ignoreDamage = false;
557 if (owner == null || !thing.ExistsOnMap)
558 {
559 return;
560 }
561 if (!owner.IsPC && owner.things.IsFull())
562 {
563 thing.Destroy();
564 }
565 else
566 {
568 {
569 return;
570 }
571 if (flag)
572 {
573 owner.Pick(thing);
574 }
575 if (thing.id == "money" && !owner.IsPC)
576 {
577 int num2 = (owner.Evalue(241) * 10 + 100) / ((owner.IsPCFaction && owner.memberType == FactionMemberType.Default) ? 1 : 10);
578 if (owner.GetCurrency() - num2 > 0)
579 {
580 owner.c_allowance += num;
581 owner.ModCurrency(-num);
582 }
583 }
584 }
585 }
FactionMemberType
ThrowMethod
Definition: ThrowMethod.cs:2
static bool ignoreDamage
Definition: AI_PlayMusic.cs:14
static EffectIRenderer Throw(Card c, Point p, Thing t, ThrowMethod method=ThrowMethod.Default, float failChance=0f)
Definition: ActThrow.cs:93
bool IsPCFactionOrMinion
Definition: Card.cs:2234
Thing Split(int a)
Definition: Card.cs:3382
bool IsUnique
Definition: Card.cs:2053
Thing SetNum(int a)
Definition: Card.cs:3393
int GetCurrency(string id="money")
Definition: Card.cs:3873
void ModCurrency(int a, string id="money")
Definition: Card.cs:3859
void Destroy()
Definition: Card.cs:4931
override bool IsAliveInCurrentZone
Definition: Chara.cs:559
Thing TryGetThrowable()
Definition: Chara.cs:7448
FactionMemberType memberType
Definition: Chara.cs:46
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4204
int reward_killkill
Definition: Player.cs:662
int reward_gould
Definition: Player.cs:650
Flags flags
Definition: Player.cs:1038
bool IsFull(int y=0)
Definition: Thing.cs:8
bool IsInstance
Definition: Zone.cs:484

References EClass._zone, ThingGen.Create(), Card.Destroy(), Card.ExistsOnMap, Player.flags, Card.id, Zone.IsInstance, Card.IsPCFactionOrMinion, Card.IsUnique, Zone.IsUserZone, Card.LV, EClass.player, Card.pos, Player.Flags.reward_gould, Player.Flags.reward_killkill, EClass.rnd(), Card.SetNum(), Card.Split(), ActThrow.Throw(), and Chara.TryGetThrowable().

Referenced by Run().

Member Data Documentation

◆ gold

int AI_PlayMusic.gold

Definition at line 20 of file AI_PlayMusic.cs.

Referenced by Run().

◆ ignoreDamage

bool AI_PlayMusic.ignoreDamage
static

Definition at line 14 of file AI_PlayMusic.cs.

◆ keepPlaying

bool AI_PlayMusic.keepPlaying
static

Definition at line 8 of file AI_PlayMusic.cs.

Referenced by AM_Adv._OnUpdateInput(), CancelKeepPlaying(), Scene.OnUpdate(), and Run().

◆ playing

PlayingSong AI_PlayMusic.playing

Definition at line 16 of file AI_PlayMusic.cs.

Referenced by Run().

◆ playingTool

Thing AI_PlayMusic.playingTool
static

Definition at line 10 of file AI_PlayMusic.cs.

Referenced by AM_Adv._OnUpdateInput(), CancelKeepPlaying(), and Run().

◆ score

int AI_PlayMusic.score

Definition at line 18 of file AI_PlayMusic.cs.

Referenced by Run().

◆ tool

Thing AI_PlayMusic.tool

Definition at line 12 of file AI_PlayMusic.cs.

Referenced by Run().

◆ toolLv

int AI_PlayMusic.toolLv

Definition at line 22 of file AI_PlayMusic.cs.

Referenced by Run().

Property Documentation

◆ CancelWhenDamaged

override bool AI_PlayMusic.CancelWhenDamaged
get

Definition at line 26 of file AI_PlayMusic.cs.

◆ ShowProgress

override bool AI_PlayMusic.ShowProgress
get

Definition at line 24 of file AI_PlayMusic.cs.

◆ TargetType

override TargetType AI_PlayMusic.TargetType
get

Definition at line 28 of file AI_PlayMusic.cs.

29 {
30 get
31 {
32 if (tool != null && tool != EClass.pc.Tool)
33 {
34 return TargetType.Any;
35 }
36 return TargetType.Self;
37 }
38 }
Thing Tool
Definition: Card.cs:2372
static TargetTypeSelf Self
Definition: TargetType.cs:7
static TargetTypeAny Any
Definition: TargetType.cs:5

The documentation for this class was generated from the following file: