Files
deltarune-yellow-translation/Scripts-new/NPC.cs
2025-05-03 20:36:17 +08:00

411 lines
24 KiB
C#

using System.Collections.Generic;
using System.ComponentModel;
using Godot;
using Godot.Bridge;
using Godot.Collections;
using Godot.NativeInterop;
[ScriptPath("res://Scripts/Entities/NPC.cs")]
public class NPC : Entity, Interacteable
{
public new class MethodName : Entity.MethodName
{
public new static readonly StringName _EnterTree = "_EnterTree";
public new static readonly StringName _Process = "_Process";
public static readonly StringName Interact = "Interact";
public static readonly StringName GetNext = "GetNext";
public static readonly StringName OnTriggerEnter = "OnTriggerEnter";
public static readonly StringName OnTriggerExit = "OnTriggerExit";
}
public new class PropertyName : Entity.PropertyName
{
public static readonly StringName spawn = "spawn";
public static readonly StringName despawn = "despawn";
public static readonly StringName neededVar = "neededVar";
public static readonly StringName neededCapture = "neededCapture";
public static readonly StringName radius = "radius";
public static readonly StringName behaviours = "behaviours";
public static readonly StringName current = "current";
public static readonly StringName playerIn = "playerIn";
}
public new class SignalName : Entity.SignalName
{
}
[Export(PropertyHint.None, "")]
public Array<SaveFile.Flags> spawn;
[Export(PropertyHint.None, "")]
public Array<SaveFile.Flags> despawn;
[Export(PropertyHint.None, "")]
public int[] neededVar;
[Export(PropertyHint.None, "")]
public IDs neededCapture = IDs.None;
[Export(PropertyHint.None, "")]
public Area2D radius;
[Export(PropertyHint.None, "")]
public IBehaviour[] behaviours;
public IBehaviour current;
private bool playerIn;
public override void _EnterTree()
{
if ((spawn != null && spawn.Count != 0 && !SaveFile.HasFlags(spawn)) || (despawn != null && despawn.Count != 0 && SaveFile.HasFlags(despawn)) || (neededCapture != IDs.None && !SaveFile.current.apprehended.Contains(neededCapture)))
{
QueueFree();
return;
}
base._EnterTree();
IBehaviour[] array = behaviours;
if (array != null && array.Length != 0)
{
for (int i = 0; i < behaviours.Length; i++)
{
behaviours[i].parent = this;
}
}
Room.current.entities.Add(this);
if (radius != null)
{
radius.Monitorable = false;
radius.BodyEntered += OnTriggerEnter;
radius.BodyExited += OnTriggerExit;
}
}
public override void _Process(double delta)
{
base._Process(delta);
if (!TextSystem.instance.Visible && (Main.inEvent == null || Main.inEvent.done) && !IsQueuedForDeletion())
{
if (current == null)
{
GetNext(IBehaviour.Triggers.Always);
}
else
{
current.Do();
}
}
}
public void Interact()
{
GetNext(IBehaviour.Triggers.Interact);
}
private void GetNext(IBehaviour.Triggers trigger)
{
if (behaviours == null || behaviours.Length == 0)
{
if (trigger == IBehaviour.Triggers.Interact)
{
Player.instance.canInput = true;
}
return;
}
for (int num = behaviours.Length - 1; num >= 0; num--)
{
if (behaviours[num].trigger == trigger && SaveFile.CanDo(behaviours[num].needs, behaviours[num].limit))
{
current = behaviours[num];
behaviours[num].Do();
break;
}
}
}
private void OnTriggerEnter(Node other)
{
if (other is Player)
{
GetNext(IBehaviour.Triggers.Range);
}
}
private void OnTriggerExit(Node other)
{
}
[EditorBrowsable(EditorBrowsableState.Never)]
internal new static List<MethodInfo> GetGodotMethodList()
{
return new List<MethodInfo>(6)
{
new MethodInfo(MethodName._EnterTree, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, null, null),
new MethodInfo(MethodName._Process, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, new List<PropertyInfo>
{
new PropertyInfo(Variant.Type.Float, "delta", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false)
}, null),
new MethodInfo(MethodName.Interact, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, null, null),
new MethodInfo(MethodName.GetNext, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, new List<PropertyInfo>
{
new PropertyInfo(Variant.Type.Int, "trigger", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false)
}, null),
new MethodInfo(MethodName.OnTriggerEnter, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, new List<PropertyInfo>
{
new PropertyInfo(Variant.Type.Object, "other", PropertyHint.None, "", PropertyUsageFlags.Default, new StringName("Node"), exported: false)
}, null),
new MethodInfo(MethodName.OnTriggerExit, new PropertyInfo(Variant.Type.Nil, "", PropertyHint.None, "", PropertyUsageFlags.Default, exported: false), MethodFlags.Normal, new List<PropertyInfo>
{
new PropertyInfo(Variant.Type.Object, "other", PropertyHint.None, "", PropertyUsageFlags.Default, new StringName("Node"), exported: false)
}, null)
};
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override bool InvokeGodotClassMethod(in godot_string_name method, NativeVariantPtrArgs args, out godot_variant ret)
{
if (method == MethodName._EnterTree && args.Count == 0)
{
_EnterTree();
ret = default(godot_variant);
return true;
}
if (method == MethodName._Process && args.Count == 1)
{
_Process(VariantUtils.ConvertTo<double>(in args[0]));
ret = default(godot_variant);
return true;
}
if (method == MethodName.Interact && args.Count == 0)
{
Interact();
ret = default(godot_variant);
return true;
}
if (method == MethodName.GetNext && args.Count == 1)
{
GetNext(VariantUtils.ConvertTo<IBehaviour.Triggers>(in args[0]));
ret = default(godot_variant);
return true;
}
if (method == MethodName.OnTriggerEnter && args.Count == 1)
{
OnTriggerEnter(VariantUtils.ConvertTo<Node>(in args[0]));
ret = default(godot_variant);
return true;
}
if (method == MethodName.OnTriggerExit && args.Count == 1)
{
OnTriggerExit(VariantUtils.ConvertTo<Node>(in args[0]));
ret = default(godot_variant);
return true;
}
return base.InvokeGodotClassMethod(in method, args, out ret);
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override bool HasGodotClassMethod(in godot_string_name method)
{
if (method == MethodName._EnterTree)
{
return true;
}
if (method == MethodName._Process)
{
return true;
}
if (method == MethodName.Interact)
{
return true;
}
if (method == MethodName.GetNext)
{
return true;
}
if (method == MethodName.OnTriggerEnter)
{
return true;
}
if (method == MethodName.OnTriggerExit)
{
return true;
}
return base.HasGodotClassMethod(in method);
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override bool SetGodotClassPropertyValue(in godot_string_name name, in godot_variant value)
{
if (name == PropertyName.spawn)
{
spawn = VariantUtils.ConvertToArray<SaveFile.Flags>(in value);
return true;
}
if (name == PropertyName.despawn)
{
despawn = VariantUtils.ConvertToArray<SaveFile.Flags>(in value);
return true;
}
if (name == PropertyName.neededVar)
{
neededVar = VariantUtils.ConvertTo<int[]>(in value);
return true;
}
if (name == PropertyName.neededCapture)
{
neededCapture = VariantUtils.ConvertTo<IDs>(in value);
return true;
}
if (name == PropertyName.radius)
{
radius = VariantUtils.ConvertTo<Area2D>(in value);
return true;
}
if (name == PropertyName.behaviours)
{
behaviours = VariantUtils.ConvertToSystemArrayOfGodotObject<IBehaviour>(in value);
return true;
}
if (name == PropertyName.current)
{
current = VariantUtils.ConvertTo<IBehaviour>(in value);
return true;
}
if (name == PropertyName.playerIn)
{
playerIn = VariantUtils.ConvertTo<bool>(in value);
return true;
}
return base.SetGodotClassPropertyValue(in name, in value);
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override bool GetGodotClassPropertyValue(in godot_string_name name, out godot_variant value)
{
if (name == PropertyName.spawn)
{
value = VariantUtils.CreateFromArray(spawn);
return true;
}
if (name == PropertyName.despawn)
{
value = VariantUtils.CreateFromArray(despawn);
return true;
}
if (name == PropertyName.neededVar)
{
value = VariantUtils.CreateFrom(in neededVar);
return true;
}
if (name == PropertyName.neededCapture)
{
value = VariantUtils.CreateFrom(in neededCapture);
return true;
}
if (name == PropertyName.radius)
{
value = VariantUtils.CreateFrom(in radius);
return true;
}
if (name == PropertyName.behaviours)
{
GodotObject[] array = behaviours;
value = VariantUtils.CreateFromSystemArrayOfGodotObject(array);
return true;
}
if (name == PropertyName.current)
{
value = VariantUtils.CreateFrom(in current);
return true;
}
if (name == PropertyName.playerIn)
{
value = VariantUtils.CreateFrom(in playerIn);
return true;
}
return base.GetGodotClassPropertyValue(in name, out value);
}
[EditorBrowsable(EditorBrowsableState.Never)]
internal new static List<PropertyInfo> GetGodotPropertyList()
{
return new List<PropertyInfo>
{
new PropertyInfo(Variant.Type.Array, PropertyName.spawn, PropertyHint.TypeString, "2/2:NULL:99999,HasNecklace:-10,PartySplit:-9,FullStorage:-8,FullWeapon:-7,FullArmor:-6,FullLInv:-5,FullDInv:-4,SpareMore:-3,FightMore:-2,None:-1,IsInDW:0,KanakoFollowing:1,AxisFollowing:2,StephFollowing:3,JuneFollowing:4,SawKetsukaneWindow:5,AxisCutoutKanako:6,Day1End:7,Day2End:8,Day3End:9,Day4End:10,Day5End:11,Day6End:12,CerobaDay1Talk:13,IntroEvent:14,WeirdStart:15,FirstCrateGate:16,FirstPuzzleSign:17,FirstDW1Chest:18,SavedKanakoCh1:19,ApprehendTutorial:20,KanakoFirstDWTalk:21,KanakoRoomAfterRescueTalk:22,SecondDW1Chest:23,EnemyAfterKanako1:24,EnemyAfterKanako2:25,EnemyAfterKanako3:26,FreedFromJail:27,MossChecked:28,AteMoss:29,KanakoCommentsOnMoss:30,PrisonTriedCrack:31,DisagreedWardenFirstTalk:32,WardenExposited:33,KanakoBearTalk:34,DarkPrisonRightTalk:35,DarkPrisonSouthTalk:36,BearingDefeated:37,WeaponTalk:38,KanakoTalkAfterTutorial:39,DidApprehendTutorial:40,KanakoLakeTalk:41,MoneyChestLake:42,PenniltonFought:43,PenniltonCaught:44,LuncherFought:45,LuncherCaught:46,BearingFought:47,BearingCaught:48,BackpackFirstTalk:49,RubbermanTalk:50,KanakoTownDiag:51,KanakoPhoneEvent:52,ChestBridgeRoom:53,KanakoLandscapeDiag:54,PencellerSidePath:55,EraserSidePath:56,PencellerSidePath2:57,ChestBridgeRoom2:58,WardenApprehendRegular:59,PeniltonDEAD:60,LuncherDEAD:61,BearingDEAD:62,KanakoMemoryGameRoomBefore:63,KanakoMemoryGameInProgress:64,KanakoMemoryGameRoomAfter:65,KanakoPostPennyWeird:66,KanakoPostPennyNormal:67,MP3DarknerTalk:68,BeatMemoryGame:69,YellowPaintEvent:70,MemoryGameWin:71,PenGuyFirstTalk:72,KanakoLakeWeird:73,BearingFortFirstPuzzle:74,KanakoTalkBFortFirstPRoom:75,BFortTrashCan:76,KanakoGateNote:77,KanakoGateEvent:78,BearingFortMainGate:79,BearingFortUpRoomLock:80,MopperMainHall1:81,MopperMainHall2:82,PencellerMainHall:83,WeirdedOnce:84,BearFortLeftMinigame:85,BBallTalk1:86,BBallTalk2:87,BBallPlayedOnce:88,BBallKanakoTalk1:89,BBallKanakoTalk2:90,BBallKanakoTalk3:91,KanakoWeirdTalkBreakRoom:92,KanakoTalkBreakRoom:93,MopperBigCorridor1:94,MopperBigCorridor2:95,MopperBigCorridor3:96,MopperBigCorridor4:97,KanakoTalkFortBigCorridor:98,KanakoWarningBeforeBear:99,KanakoTalkBearPrison:100,KanakoWarningBeforeFountain:101,BearFortTreasureRoom:102,BearFortGotTreasure:103,BearFortTreasureTalk:104,BearTreasureChest1:105,BearTreasureChest2:106,BearTreasureChest3:107,BearFortTreasureInvFull:108,BearTreasureLost:109,KanakoTalkTreasurePost:110,NightTime:111,SchoolFountainSealed:112,FoxFirstTalk:113,FoxDefeated:114,FoxFullInvSpare:115,FoxFullInvDefeat:116,FoxGotItem:117,PenGuyReturn:118,SchoolCheckedLock:119,MagicDoorActive:120,WardenTalkEndDay1:121,WardenInnocentTalk:122,DinaDay1Talk:123,VirgilDay1:124,AfterDinnerDay1:125,MartletHouseCheckD1:126,IgnoredCerobaCallD1:127,FirstKetsuShopEvent:128,CerobaTalkChujinDoor:129,KanakoDiscussDay1:130,ListenedToCCDay1:131,ReturnedNecklace:132,GaveLetterMartlet:133,LuncherDisappear:134,StarloDay1:135,VirgilDay1Weird:136,VirgilDay1Rejected:137,NicePenceller:138,BearingSpareItem:139,BearingSpared:140,KanakoTalkPostBearingF:141,PenGuyPrison:142,KanakoTalkNorthPrisonTalk:143,KanakoApprehendTalk:144,MoochTalkD1:145,AnnoyedDecibat:146,MartEventDay2:147,MailWhaleDay2:148,KanakoEventDay2:149,SchoolRecessDay2:150,JuneRecessDay2:151,MelodyEventDay2:152,RedLetterDay2:153,EnterDarkJailDay2:154,WardenTalkDay2:155,PostWardenOutDWTalkDay2:156,CerobaEventDay2:157,FridgeDay2:158,Day2KanakoRoomCheck:159,KanakoRedLetterDWEntTalk:160,AxisEvent:161,AxisFirstTalk:162,AxisTalkSlide:163,DW2Overview:164,DW2MagicDoor:165,LockLightWorldPortal:166,WardenRobotopiaTalk:167,Gizzard1:168,Gizzard2:169,ChestDW2_1:170,FirstPuzzleDW2:171,Gizzard3:172,KanakoTalkWaterGun:173,Puzzle2_DW2:174,ChestDW2_2:175,DW2Room2Stapler:176,DW2Room2Wrench:177,DW2Room2Gear:178,DW2PlanTalk:179,DW2TownTVEvent:180,Puzzle3_DW2:181,FactoryMainEnemyLeft:182,FactoryMainEnemyRight:183,FactoryPuzzle1:184,FactoryPuzzle2:185,AxisPuzzleTalk:186,EnemyBeforeFactory:187,FactoryRightPuzzle1:188,TalkFactoryRight:189,ChestFactoryRight:190,FactoryRightEnemy:191,ChestFactoryLeft:192,ChestFactoryLeft2:193,TalkFactoryLeft:194,FactoryLeftEnemy1:195,FactoryLeftEnemy2:196,FactoryFirstSwitch:197,ClawTalk:198,TramEvent:199,AxisTrashEvent:200,AxisSoloTalk:201,AxisTrashTreasure:202,PuzzleChujinDWTrash:203,AxisTrashPuzzleTalk:204,AxisHandGet:205,FirstUpstairsTalk:206,UpstairsOverview:207,BunBunEvent1:208,BunBunEvent2:209,KanakoFountainTalk:210,KanakoTosterTalk:211,UpstairsGreenChest:212,UpstairsTalk2:213,RangerEvent:214,RangerTalk:215,RangerBlueBalloon:216,ArchiveChestOutside:217,ArchivesPC:218,PenGuyTalkDay2:219,ChujinShopTalk:220,PenGuyRestRoom:221,SchoolJokeDuoD2:222,BBallPity1:223,BBallPity2:224,BBallPitied:225,BellCrusherPity:226,BBallChestOpen:227,EnemyAfterKanako4:228,EnemyAfterKanako5:229,EnemyAfterKanako6:230,AfterKanakoBridgeOpen:231,PedlaHospitalD1:232,KTalkPrisonRightBD:233,WarpDoorFirst:234,BenchTSouth:235,BenchTMain:236,BenchDW2Archive:237,KanakoFishFirstTalk:238,FishGuyFirstTalk:239,FishGuyTaskDay2:240,PedlaHospitalD2:241,StarloDadDay2:242,ViolettaD2:243,BlackjackD2:244,MochaEventD1:245,StarloEventD2:246,RobaDay2Early:247", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.Array, PropertyName.despawn, PropertyHint.TypeString, "2/2:NULL:99999,HasNecklace:-10,PartySplit:-9,FullStorage:-8,FullWeapon:-7,FullArmor:-6,FullLInv:-5,FullDInv:-4,SpareMore:-3,FightMore:-2,None:-1,IsInDW:0,KanakoFollowing:1,AxisFollowing:2,StephFollowing:3,JuneFollowing:4,SawKetsukaneWindow:5,AxisCutoutKanako:6,Day1End:7,Day2End:8,Day3End:9,Day4End:10,Day5End:11,Day6End:12,CerobaDay1Talk:13,IntroEvent:14,WeirdStart:15,FirstCrateGate:16,FirstPuzzleSign:17,FirstDW1Chest:18,SavedKanakoCh1:19,ApprehendTutorial:20,KanakoFirstDWTalk:21,KanakoRoomAfterRescueTalk:22,SecondDW1Chest:23,EnemyAfterKanako1:24,EnemyAfterKanako2:25,EnemyAfterKanako3:26,FreedFromJail:27,MossChecked:28,AteMoss:29,KanakoCommentsOnMoss:30,PrisonTriedCrack:31,DisagreedWardenFirstTalk:32,WardenExposited:33,KanakoBearTalk:34,DarkPrisonRightTalk:35,DarkPrisonSouthTalk:36,BearingDefeated:37,WeaponTalk:38,KanakoTalkAfterTutorial:39,DidApprehendTutorial:40,KanakoLakeTalk:41,MoneyChestLake:42,PenniltonFought:43,PenniltonCaught:44,LuncherFought:45,LuncherCaught:46,BearingFought:47,BearingCaught:48,BackpackFirstTalk:49,RubbermanTalk:50,KanakoTownDiag:51,KanakoPhoneEvent:52,ChestBridgeRoom:53,KanakoLandscapeDiag:54,PencellerSidePath:55,EraserSidePath:56,PencellerSidePath2:57,ChestBridgeRoom2:58,WardenApprehendRegular:59,PeniltonDEAD:60,LuncherDEAD:61,BearingDEAD:62,KanakoMemoryGameRoomBefore:63,KanakoMemoryGameInProgress:64,KanakoMemoryGameRoomAfter:65,KanakoPostPennyWeird:66,KanakoPostPennyNormal:67,MP3DarknerTalk:68,BeatMemoryGame:69,YellowPaintEvent:70,MemoryGameWin:71,PenGuyFirstTalk:72,KanakoLakeWeird:73,BearingFortFirstPuzzle:74,KanakoTalkBFortFirstPRoom:75,BFortTrashCan:76,KanakoGateNote:77,KanakoGateEvent:78,BearingFortMainGate:79,BearingFortUpRoomLock:80,MopperMainHall1:81,MopperMainHall2:82,PencellerMainHall:83,WeirdedOnce:84,BearFortLeftMinigame:85,BBallTalk1:86,BBallTalk2:87,BBallPlayedOnce:88,BBallKanakoTalk1:89,BBallKanakoTalk2:90,BBallKanakoTalk3:91,KanakoWeirdTalkBreakRoom:92,KanakoTalkBreakRoom:93,MopperBigCorridor1:94,MopperBigCorridor2:95,MopperBigCorridor3:96,MopperBigCorridor4:97,KanakoTalkFortBigCorridor:98,KanakoWarningBeforeBear:99,KanakoTalkBearPrison:100,KanakoWarningBeforeFountain:101,BearFortTreasureRoom:102,BearFortGotTreasure:103,BearFortTreasureTalk:104,BearTreasureChest1:105,BearTreasureChest2:106,BearTreasureChest3:107,BearFortTreasureInvFull:108,BearTreasureLost:109,KanakoTalkTreasurePost:110,NightTime:111,SchoolFountainSealed:112,FoxFirstTalk:113,FoxDefeated:114,FoxFullInvSpare:115,FoxFullInvDefeat:116,FoxGotItem:117,PenGuyReturn:118,SchoolCheckedLock:119,MagicDoorActive:120,WardenTalkEndDay1:121,WardenInnocentTalk:122,DinaDay1Talk:123,VirgilDay1:124,AfterDinnerDay1:125,MartletHouseCheckD1:126,IgnoredCerobaCallD1:127,FirstKetsuShopEvent:128,CerobaTalkChujinDoor:129,KanakoDiscussDay1:130,ListenedToCCDay1:131,ReturnedNecklace:132,GaveLetterMartlet:133,LuncherDisappear:134,StarloDay1:135,VirgilDay1Weird:136,VirgilDay1Rejected:137,NicePenceller:138,BearingSpareItem:139,BearingSpared:140,KanakoTalkPostBearingF:141,PenGuyPrison:142,KanakoTalkNorthPrisonTalk:143,KanakoApprehendTalk:144,MoochTalkD1:145,AnnoyedDecibat:146,MartEventDay2:147,MailWhaleDay2:148,KanakoEventDay2:149,SchoolRecessDay2:150,JuneRecessDay2:151,MelodyEventDay2:152,RedLetterDay2:153,EnterDarkJailDay2:154,WardenTalkDay2:155,PostWardenOutDWTalkDay2:156,CerobaEventDay2:157,FridgeDay2:158,Day2KanakoRoomCheck:159,KanakoRedLetterDWEntTalk:160,AxisEvent:161,AxisFirstTalk:162,AxisTalkSlide:163,DW2Overview:164,DW2MagicDoor:165,LockLightWorldPortal:166,WardenRobotopiaTalk:167,Gizzard1:168,Gizzard2:169,ChestDW2_1:170,FirstPuzzleDW2:171,Gizzard3:172,KanakoTalkWaterGun:173,Puzzle2_DW2:174,ChestDW2_2:175,DW2Room2Stapler:176,DW2Room2Wrench:177,DW2Room2Gear:178,DW2PlanTalk:179,DW2TownTVEvent:180,Puzzle3_DW2:181,FactoryMainEnemyLeft:182,FactoryMainEnemyRight:183,FactoryPuzzle1:184,FactoryPuzzle2:185,AxisPuzzleTalk:186,EnemyBeforeFactory:187,FactoryRightPuzzle1:188,TalkFactoryRight:189,ChestFactoryRight:190,FactoryRightEnemy:191,ChestFactoryLeft:192,ChestFactoryLeft2:193,TalkFactoryLeft:194,FactoryLeftEnemy1:195,FactoryLeftEnemy2:196,FactoryFirstSwitch:197,ClawTalk:198,TramEvent:199,AxisTrashEvent:200,AxisSoloTalk:201,AxisTrashTreasure:202,PuzzleChujinDWTrash:203,AxisTrashPuzzleTalk:204,AxisHandGet:205,FirstUpstairsTalk:206,UpstairsOverview:207,BunBunEvent1:208,BunBunEvent2:209,KanakoFountainTalk:210,KanakoTosterTalk:211,UpstairsGreenChest:212,UpstairsTalk2:213,RangerEvent:214,RangerTalk:215,RangerBlueBalloon:216,ArchiveChestOutside:217,ArchivesPC:218,PenGuyTalkDay2:219,ChujinShopTalk:220,PenGuyRestRoom:221,SchoolJokeDuoD2:222,BBallPity1:223,BBallPity2:224,BBallPitied:225,BellCrusherPity:226,BBallChestOpen:227,EnemyAfterKanako4:228,EnemyAfterKanako5:229,EnemyAfterKanako6:230,AfterKanakoBridgeOpen:231,PedlaHospitalD1:232,KTalkPrisonRightBD:233,WarpDoorFirst:234,BenchTSouth:235,BenchTMain:236,BenchDW2Archive:237,KanakoFishFirstTalk:238,FishGuyFirstTalk:239,FishGuyTaskDay2:240,PedlaHospitalD2:241,StarloDadDay2:242,ViolettaD2:243,BlackjackD2:244,MochaEventD1:245,StarloEventD2:246,RobaDay2Early:247", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.PackedInt32Array, PropertyName.neededVar, PropertyHint.None, "", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.Int, PropertyName.neededCapture, PropertyHint.Enum, "None:-1,Clover:0,Kanako:1,Martlet:2,Ceroba:3,Chujin:4,Starlo:5,Ed:6,Mooch:7,Moray:8,Ace:9,Dina:10,Mo:11,Axis:12,June:13,Melody:14,Dalv:15,TestEnemy:16,Penceller:17,Eraserhead:18,Bearing:19,Pennilton:20,BellBoss:21,Necklace:22,Mopper:23,Warden:24,BackpackDarkner:25,KeychainDarkner:26,JacketDarkner:27,MP3Darkner:28,PenGuy:29,UNUSED:30,FoxBoss:31,CarDarkner:32,BBallDarkner:33,ThumbtackDarkner:34,CoinDarkner:35,Decibat:36,Virgil:37,Kangaroo:38,Cat:39,Pyramid:40,Mirror:41,Scroll:42,Fly:43,PencilLizard:44,AntKid:45,TinfoilLizard:46,HorseGirl:47,DeerGirl:48,TravellerM:49,TravellerF:50,RichGuy:51,RichWoman:52,Aunt:53,Snake:54,Cactus:55,TechGuy:56,Golem:57,StarloBrother:58,StarloDad:59,StarloMom:60,GreenBear:61,RadDude:62,Dunebud:63,Horse:64,PyramidBug:65,Doctor:66,BlueTriangle:67,TallAntlerGirl:68,BlueFire:69,CursorMan:70,IceCreamGuy:71,DemonGuy:72,Squid:73,Bunny:74,KidR:75,KidB:76,KidG:77,MuscleGuy:78,SadGirl:79,SittingGuy:80,MagmaBug:81,CloakAntlerGirl:82,CactusGirl:83,FortuneTeller:84,EyeballGuy:85,MailWhale:86,Gizmo:87,Mocha:88,Britz:89,Violetta:90,Rosa:91,Pedla:92,Conner:93,Gearzerd:94,Toaster:95,Capacitor:96,Stapler:97,BigAxis:98,Wrench:99,RedLetter:100,Batter:101,BunBun:102,Drill:103,Toaster2:104,LegoGreen:105,LegoPink:106,LegoBlue:107,LegoOrange:108,LegoBull:109,KanakoPC:110,RangerRed:111,RangerGreen:112,RangerBlue:113,CameraMan:114,Ruler:115,BlueFireGuy:116,MinerGF:117,SmokerMiner:118,HatMinerGuy:119,GemMinerGuy:120,HappyMinerGirl:121,TeaBull:122,MorayDad:123,MorayMom:124,SittingBunnyGuy:125,ElevatorMinerGuy:126,NervousGirl:127,Blackjack:128", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.Object, PropertyName.radius, PropertyHint.NodeType, "Area2D", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.Array, PropertyName.behaviours, PropertyHint.TypeString, "24/17:IBehaviour", PropertyUsageFlags.Default | PropertyUsageFlags.ScriptVariable, exported: true),
new PropertyInfo(Variant.Type.Object, PropertyName.current, PropertyHint.None, "", PropertyUsageFlags.ScriptVariable, exported: false),
new PropertyInfo(Variant.Type.Bool, PropertyName.playerIn, PropertyHint.None, "", PropertyUsageFlags.ScriptVariable, exported: false)
};
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override void SaveGodotObjectData(GodotSerializationInfo info)
{
base.SaveGodotObjectData(info);
info.AddProperty(PropertyName.spawn, Variant.CreateFrom(spawn));
info.AddProperty(PropertyName.despawn, Variant.CreateFrom(despawn));
info.AddProperty(PropertyName.neededVar, Variant.From(in neededVar));
info.AddProperty(PropertyName.neededCapture, Variant.From(in neededCapture));
info.AddProperty(PropertyName.radius, Variant.From(in radius));
StringName name = PropertyName.behaviours;
GodotObject[] array = behaviours;
info.AddProperty(name, Variant.CreateFrom(array));
info.AddProperty(PropertyName.current, Variant.From(in current));
info.AddProperty(PropertyName.playerIn, Variant.From(in playerIn));
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override void RestoreGodotObjectData(GodotSerializationInfo info)
{
base.RestoreGodotObjectData(info);
if (info.TryGetProperty(PropertyName.spawn, out var value))
{
spawn = value.AsGodotArray<SaveFile.Flags>();
}
if (info.TryGetProperty(PropertyName.despawn, out var value2))
{
despawn = value2.AsGodotArray<SaveFile.Flags>();
}
if (info.TryGetProperty(PropertyName.neededVar, out var value3))
{
neededVar = value3.As<int[]>();
}
if (info.TryGetProperty(PropertyName.neededCapture, out var value4))
{
neededCapture = value4.As<IDs>();
}
if (info.TryGetProperty(PropertyName.radius, out var value5))
{
radius = value5.As<Area2D>();
}
if (info.TryGetProperty(PropertyName.behaviours, out var value6))
{
behaviours = value6.AsGodotObjectArray<IBehaviour>();
}
if (info.TryGetProperty(PropertyName.current, out var value7))
{
current = value7.As<IBehaviour>();
}
if (info.TryGetProperty(PropertyName.playerIn, out var value8))
{
playerIn = value8.As<bool>();
}
}
}