Elin Decompiled Documentation EA 23.327 Nightly
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 ()
 
GetChild< T > ()
 
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, bool ignoreConnection=false, 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 ()
 
bool Perform (Chara _cc, Card _tc=null, Point _tp=null)
 
virtual bool ValidatePerform (Chara _cc, Card _tc, Point _tp)
 
virtual bool CanPerform ()
 
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 long GetSourceValue (long 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, bool shorten=false)
 
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 long GetResistDamage (long 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 (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
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 ShouldEndMimicry [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]
 
- 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 433 of file AI_PlayMusic.cs.

434 {
435 if (owner == null || !owner.IsPC)
436 {
437 return;
438 }
439 if (success)
440 {
441 score = score * 110 / 100;
442 }
443 else
444 {
445 score = score / 2 - 20;
446 }
447 int num = Mathf.Clamp(score / 20 + 1, 0, 9);
448 owner.Say(Lang.GetList("music_result")[num]);
449 if (gold > 0)
450 {
451 owner.Say("music_reward", owner, gold.ToString() ?? "");
452 }
453 if (EClass.rnd(3) != 0)
454 {
455 owner.stamina.Mod(-1);
456 }
457 QuestMusic questMusic = EClass.game.quests.Get<QuestMusic>();
458 if (questMusic != null)
459 {
460 questMusic.score += score;
461 questMusic.sumMoney += gold;
462 int num2 = num / 2 - 1;
463 if (num > 0)
464 {
465 SE.Play("clap" + num2);
466 }
467 }
468 }
new Chara owner
Definition: AIAct.cs:14
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7284
override bool IsPC
Definition: Chara.cs:630
Stats stamina
Definition: Chara.cs:1205
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static int rnd(long a)
Definition: EClass.cs:59
QuestManager quests
Definition: Game.cs:183
Definition: Lang.cs:7
static string[] GetList(string id)
Definition: Lang.cs:113
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 599 of file AI_PlayMusic.cs.

600 {
601 if (playing != null && (bool)playing.bgm)
602 {
603 playing.bgm.song.Fail(playing.source, playing.bgm);
604 if ((bool)UISong.Instance)
605 {
607 }
608 playing.source = null;
609 SoundManager.jingleTimer = 1f;
610 }
611 Evaluate(success: false);
612 }
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 "sax":
91 case "trumpet":
92 idSong = "trumpet_practice";
93 break;
94 case "piano_gould":
95 idSong = "piano_gould";
96 break;
97 case "piano_killkill":
98 case "piano2":
99 idSong = "piano_neko";
100 break;
101 case "piano":
102 idSong = "piano_kanon";
103 break;
104 case "harpsichord":
105 idSong = "harpsichord_goldberg";
106 break;
107 case "guitar_ash":
108 idSong = "guitar_caccini";
109 break;
110 case "ocarina":
111 idSong = "ocarina_lulu";
112 break;
113 case "harmonica":
114 idSong = "harmonica_kumi";
115 break;
116 case "guitar_efrond":
117 case "guitar_elec":
118 idSong = "guitar_dusk";
119 break;
120 case "guitar":
121 idSong = "guitar_air";
122 break;
123 case "harp":
124 idSong = "harp_komori";
125 break;
126 case "shield_lute":
127 case "lute":
128 idSong = "guitar_sad";
129 break;
130 case "recorder":
131 idSong = "recorder";
132 break;
133 case "flute":
134 idSong = "flute";
135 break;
136 case "taiko":
137 case "drum":
138 idSong = "taiko";
139 break;
140 case "mokugyo":
141 idSong = "mokugyo";
142 break;
143 case "tambourine":
144 idSong = "tambourine";
145 break;
146 case "mic":
147 idSong = "mic_rachmaninoff";
148 break;
149 case "cello":
150 idSong = "cello_prelude";
151 break;
152 case "koto":
153 idSong = "koto";
154 break;
155 case "instrument_violin":
156 case "panty":
157 idSong = "violin_chaconne";
158 break;
159 case "stradivarius":
160 idSong = "violin_furusato";
161 break;
162 default:
163 idSong = ((EClass.Sound.GetData("Instrument/" + tool.id) is BGMData) ? tool.id : "violin_chaconne");
164 break;
165 }
166 if (owner.IsPC && EClass.player.knownSongs.ContainsKey(idSong))
167 {
168 song = EClass.player.knownSongs[idSong];
169 }
170 if (song == null)
171 {
172 song = new KnownSong();
173 if (owner.IsPC)
174 {
175 EClass.player.knownSongs[idSong] = song;
176 }
177 }
178 playing = new PlayingSong
179 {
180 id = idSong,
181 idTool = tool.id
182 };
183 if (owner.IsPC)
184 {
185 EClass.player.playingSong = playing;
186 }
187 }
188 if (owner.IsPC && EClass.Sound.GetData("Instrument/" + idSong) is BGMData bGMData)
189 {
190 bGMData.song.index = playing.index;
191 }
192 if (Application.isEditor && owner.IsPC)
193 {
194 song.lv += 10;
195 Debug.Log(song.lv);
196 }
197 List<Chara> reacted = new List<Chara>();
198 Progress_Custom progress = new Progress_Custom
199 {
200 maxProgress = 15,
201 cancelWhenMoved = false,
202 showProgress = false,
203 canProgress = () => tool != null && !tool.isDestroyed,
204 onProgressBegin = delegate
205 {
206 owner.Say("music_start", owner, tool);
207 owner.ShowEmo(Emo.happy, 3f, skipSame: false);
208 if (tool != null && tool.ExistsOnMap)
209 {
211 }
212 owner.PlayAnime(AnimeID.PlayMusic);
213 if (owner.IsPC)
214 {
215 bool flag = false;
216 if (playing.mistakes == 0 && (bool)playing.source && playing.source.isPlaying && playing.source.data.name == idSong)
217 {
218 SoundSource soundSource = playing.source;
219 if (Mathf.Abs(soundSource.source.time - (soundSource.data as BGMData).song.parts[playing.index].start) < 2f && playing.source.source.volume >= 0.1f)
220 {
221 soundSource.KeepPlay();
222 flag = true;
223 Debug.Log("keep:" + soundSource.source.time);
224 }
225 else
226 {
227 EClass.Sound.Stop(soundSource.data, 0.1f);
228 }
229 Debug.Log(playing.source);
230 }
231 if (!flag)
232 {
233 playing.source = owner.PlaySound("Instrument/" + idSong);
234 Debug.Log(playing.source);
235 }
236 playing.bgm = playing.source.data as BGMData;
237 BGMData.Part part = playing.bgm.song.parts[playing.index];
238 if (!UISong.Instance)
239 {
240 Util.Instantiate<UISong>("UI/Util/UISong", EClass.ui.rectDynamicEssential);
241 }
243 if (EClass.Sound.currentBGM != null)
244 {
245 float num3 = 0.5f - 0.1f * (float)playing.index;
246 if (num3 < 0f)
247 {
248 num3 = 0f;
249 }
250 if (EClass.Sound.sourceBGM.volume > EClass.Sound.currentBGM.data.volume * num3)
251 {
252 EClass.Sound.sourceBGM.DOFade(EClass.Sound.currentBGM.data.volume * num3, 3f);
253 }
254 SoundManager.jingleTimer = part.duration / playing.bgm.pitch + playing.bgm.song.fadeIn + 2f;
255 }
256 }
257 },
258 onProgress = delegate(Progress_Custom p)
259 {
261 owner.Say(Lang.GetList("music").RandomItem());
262 Msg.SetColor();
263 if (tool.id == "tambourine")
264 {
265 Msg.Say("tambourine");
266 }
267 if (EClass.debug.enable && EClass.pc.job.id == "pianist")
268 {
269 song.lv = 10000;
270 }
271 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))
272 {
274 if (EClass.rnd(2) == 0)
275 {
276 LevelSong(2 + 2 * EClass.rnd(owner.Evalue(1405) + 1));
277 }
278 if (playing.mistakes >= 10)
279 {
280 playing.index = 0;
281 }
282 Cancel();
283 }
284 else
285 {
287 {
288 if (item.conSleep != null && item.ResistLv(957) <= 0)
289 {
290 item.conSleep.Kill();
291 item.ShowEmo(Emo.angry);
292 }
293 }
294 List<Chara> list = owner.pos.ListWitnesses(owner, 4, WitnessType.music);
295 int num = (owner.Evalue(241) + tool?.Evalue(241)).Value * (100 + toolLv) / 100;
296 int num2 = 0;
297 foreach (Chara item2 in list)
298 {
299 if (owner == null)
300 {
301 break;
302 }
303 if (!reacted.Contains(item2) && EClass.rnd(5) == 0)
304 {
305 if (tool != null)
306 {
307 foreach (Element value in tool.elements.dict.Values)
308 {
309 if (value.id == 489 && EClass.rnd(8) == 0)
310 {
311 item2.AddCondition<ConDrunk>();
312 }
313 if (value.source.categorySub == "eleAttack")
314 {
315 item2.ApplyElementEffect(value, value.Value * 10, owner, checkHostileAct: true);
316 }
317 }
318 }
319 if (owner.IsPCParty)
320 {
321 if (item2.interest <= 0 || (EClass._zone is Zone_Music && (item2.IsPCFaction || item2.IsPCFactionMinion)))
322 {
323 continue;
324 }
325 if (!item2.isDrunk)
326 {
327 item2.interest -= EClass.rnd(10);
328 if (item2.interest < 0)
329 {
330 item2.Talk("musicBored");
331 continue;
332 }
333 }
334 }
335 if (EClass.rnd(num2 * num2) <= 30 && item2.pos.FirstChara == item2)
336 {
337 bool isMinion = item2.IsMinion;
338 p.cancelWhenDamaged = false;
339 if (num < item2.LV && EClass.rnd(2) == 0)
340 {
341 reacted.Add(item2);
342 if (!isMinion)
343 {
344 score -= item2.LV / 2 - 10;
345 }
346 if (EClass.rnd(2) == 0)
347 {
348 item2.Talk("musicBad");
349 }
350 else
351 {
352 item2.Say("musicBad", item2, owner);
353 }
354 item2.ShowEmo(Emo.sad);
355 owner.elements.ModExp(241, 10f);
356 if (EClass.rnd(5) == 0)
357 {
358 ThrowReward(item2, punish: true);
359 }
360 num2++;
361 }
362 else if (EClass.rnd(num + 5) > EClass.rnd(item2.LV * 5 + 1))
363 {
364 reacted.Add(item2);
365 if (!isMinion)
366 {
367 score += EClass.rnd(item2.LV / 2 + 5) + 5;
368 }
369 if (EClass.rnd(2) == 0)
370 {
371 item2.Talk("musicGood");
372 }
373 else
374 {
375 item2.Say("musicGood", item2, owner);
376 }
377 item2.ShowEmo(Emo.happy);
378 item2.renderer.PlayAnime((EClass.rnd(2) == 0) ? AnimeID.Jump : AnimeID.Fishing);
379 owner.elements.ModExp(241, EClass._zone.IsUserZone ? 10 : 50);
380 if (!isMinion)
381 {
382 ThrowReward(item2, punish: false);
383 }
384 num2++;
385 }
386 p.cancelWhenDamaged = true;
387 }
388 }
389 }
390 if (owner != null && owner.IsPC && EClass.rnd(80) < num2)
391 {
392 owner.stamina.Mod(-1);
393 }
394 }
395 },
396 onProgressComplete = delegate
397 {
398 if (EClass.rnd(2) == 0)
399 {
400 LevelSong(2);
401 }
402 if ((bool)playing.bgm)
403 {
404 playing.index++;
405 playing.mistakes = 0;
406 if (playing.index >= playing.bgm.song.parts.Count)
407 {
408 playing.index = 0;
409 }
410 playing.bgm.song.index = playing.index;
411 }
412 Evaluate(success: true);
413 }
414 }.SetDuration(26);
415 yield return Do(progress);
416 if (progress.status == Status.Fail)
417 {
418 yield return Cancel();
419 }
420 void LevelSong(int a)
421 {
422 if (a > 0)
423 {
424 song.lv += a + EClass.rnd(2);
425 if (owner == EClass.pc)
426 {
427 Msg.Say("level_song");
428 }
429 }
430 }
431 }
AnimeID
Definition: AnimeID.cs:2
if(!match.Success)
Emo
Definition: Emo.cs:2
WitnessType
Definition: WitnessType.cs:2
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Definition: AIAct.cs:430
virtual Status Cancel()
Definition: AIAct.cs:305
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:446
int progress
Definition: AIProgress.cs:5
void ThrowReward(Chara c, bool punish)
void PlayAnime(AnimeID id, bool force)
bool isDestroyed
Definition: Card.cs:78
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6606
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3273
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7166
ICardParent parent
Definition: Card.cs:56
bool ExistsOnMap
Definition: Card.cs:2137
void ApplyElementEffect(Element e, int eleP, Card origin, bool checkHostileAct=false)
Definition: Card.cs:5073
Point pos
Definition: Card.cs:60
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6574
ThingContainer things
Definition: Card.cs:39
int Evalue(int ele)
Definition: Card.cs:2704
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:6625
CardRenderer renderer
Definition: Card.cs:64
int LV
Definition: Card.cs:389
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9769
bool isDrunk
Definition: Chara.cs:126
SourceJob.Row job
Definition: Chara.cs:470
override bool IsPCParty
Definition: Chara.cs:633
int interest
Definition: Chara.cs:321
override bool IsMinion
Definition: Chara.cs:645
override bool IsPCFaction
Definition: Chara.cs:689
override bool IsPCFactionMinion
Definition: Chara.cs:673
override void LookAt(Card c)
Definition: Chara.cs:3752
bool enable
Definition: CoreDebug.cs:301
static Zone _zone
Definition: EClass.cs:21
static Map _map
Definition: EClass.cs:19
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
static CoreDebug debug
Definition: EClass.cs:49
static SoundManager Sound
Definition: EClass.cs:47
static UI ui
Definition: EClass.cs:17
Definition: EInput.cs:8
static void Consume(int _skipFrame)
Definition: EInput.cs:667
void ModExp(int ele, float a, bool chain=false)
Dictionary< int, Element > dict
int id
Definition: ELEMENT.cs:259
SourceElement.Row source
Definition: ELEMENT.cs:282
int Value
Definition: ELEMENT.cs:301
ConfigPreference preference
Definition: Game.cs:97
Config config
Definition: Game.cs:219
int lv
Definition: KnownSong.cs:6
List< Chara > ListCharasInCircle(Point center, float radius, bool los=true)
Definition: Map.cs:2350
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:1113
PlayingSong playingSong
Definition: Player.cs:1291
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:835
bool IsBlocked
Definition: Point.cs:363
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:275

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 470 of file AI_PlayMusic.cs.

471 {
472 Thing thing = null;
473 string text = "";
474 int num = 1;
475 bool flag = true;
476 if (punish)
477 {
478 text = ((EClass.rnd(5) == 0) ? "rock" : "pebble");
479 if (EClass.rnd(8) == 0)
480 {
481 text = ((EClass.rnd(3) == 0) ? "water_dirty" : "water");
482 }
483 if (!c.IsPCFactionOrMinion)
484 {
485 thing = c.TryGetThrowable()?.Split(1);
486 }
487 }
488 else if (EClass.rnd(100) == 0 && !EClass._zone.IsUserZone)
489 {
490 text = "ecopo";
491 if (EClass.rnd(4) == 0)
492 {
493 text = "gacha_coin";
494 }
495 if (EClass.rnd(4) == 0)
496 {
497 text = "plat";
498 }
499 if (EClass.rnd(3) == 0)
500 {
501 text = "tomato";
502 }
503 if (EClass.rnd(3) == 0)
504 {
505 text = "casino_coin";
506 }
508 {
509 if (c.LV >= 20 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_killkill + 1)) == 0)
510 {
511 text = "piano_killkill";
512 punish = true;
513 flag = false;
515 }
516 else if (c.LV >= 40 && EClass.rnd(10 * (int)Mathf.Pow(2f, EClass.player.flags.reward_gould + 1)) == 0)
517 {
518 text = "piano_gould";
519 punish = true;
520 flag = false;
522 }
523 }
524 }
525 else
526 {
527 num = (EClass.rnd(c.LV * 2 + 1) + 1) * (100 + toolLv * 2 + owner.Evalue(1405) * 10) / 100;
528 if (c.IsUnique)
529 {
530 num *= 2;
531 }
532 if (!(EClass._zone is Zone_Music))
533 {
534 if (num > 25)
535 {
536 num /= 2;
537 }
538 if (num > 50)
539 {
540 num /= 2;
541 }
542 if (num > 100)
543 {
544 num /= 2;
545 }
547 {
548 num /= 5;
549 }
550 }
551 if (num < 1)
552 {
553 num = 1;
554 }
555 gold += num;
556 text = "money";
557 }
558 if (!owner.IsPCParty && !punish && text != "money")
559 {
560 return;
561 }
562 if (thing == null)
563 {
564 thing = ThingGen.Create(text, -1, owner.LV).SetNum(num);
565 }
566 ignoreDamage = true;
567 ActThrow.Throw(c, owner.pos, thing, (!punish) ? ThrowMethod.Reward : ThrowMethod.Punish);
568 ignoreDamage = false;
569 if (owner == null || !thing.ExistsOnMap)
570 {
571 return;
572 }
573 if (!owner.IsPC && owner.things.IsFull())
574 {
575 thing.Destroy();
576 }
577 else
578 {
580 {
581 return;
582 }
583 if (flag)
584 {
585 owner.Pick(thing);
586 }
587 if (thing.id == "money" && !owner.IsPC)
588 {
589 int? obj = ((owner.Evalue(241) + tool?.Evalue(241)) * 10 + 100) / ((owner.IsPCFaction && owner.memberType == FactionMemberType.Default) ? 1 : 10);
590 if (owner.GetCurrency() - obj > 0)
591 {
592 owner.c_allowance += num;
593 owner.ModCurrency(-num);
594 }
595 }
596 }
597 }
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:97
bool IsPCFactionOrMinion
Definition: Card.cs:2342
Thing Split(int a)
Definition: Card.cs:3658
bool IsUnique
Definition: Card.cs:2143
Thing SetNum(int a)
Definition: Card.cs:3669
int GetCurrency(string id="money")
Definition: Card.cs:4149
void ModCurrency(int a, string id="money")
Definition: Card.cs:4135
void Destroy()
Definition: Card.cs:5301
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
Thing TryGetThrowable()
Definition: Chara.cs:8169
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4542
int reward_killkill
Definition: Player.cs:724
int reward_gould
Definition: Player.cs:712
Flags flags
Definition: Player.cs:1161
bool IsFull(int y=0)
Definition: Thing.cs:8
bool IsInstance
Definition: Zone.cs:493

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(), tool, 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:2480
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: