public static void Init() { ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "Explosions are the spice of life! ...and death."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "Name's Boomhildr, demolitions expert, self taught, at yer service."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "My legs? Got taken clean off by a dynamite explosion! It's what made me want to go into pyrotechnics!"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "My arm? ...it was bitten off by a gator, why do you ask."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "My eye? It was shot out. By a bomb. With a gun."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "What am I here for?... none of your business."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "There was a little claymore running around here a while ago, screaming something about 'Booms'. Pretty cool guy."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "Some weirdo keeps coming by and calling me an 'Angel of Death'. What's up with that?"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "I've got all the boom you could ask for. Boom comin' out the ears."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "Me and Cursula knew each other in college... before she got into mumbo jumbo."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_GENERIC_TALK", "My mama always used to say that frag grenades are the fireworks of explosive warfare."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_STOPPER_TALK", "Not now, got powder to mix, fuses to braid, you know the deal."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_STOPPER_TALK", "I'm busy riggin' up for a big blast."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_STOPPER_TALK", "Listen pal, I've only got so much patience for blabbermouths."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_PURCHASE_TALK", "Thanks for the cash."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_PURCHASE_TALK", "Have fun blowing &%*! up."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_PURCHASE_TALK", "Send 'em to kingdom come for me!"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_PURCHASE_TALK", "Boom-boom-boom-boom, amirite?"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_NOSALE_TALK", "Sorry mate, nothin' in this world is free."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_NOSALE_TALK", "Good explosives aren't cheap."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_NOSALE_TALK", "I'm not running a charity here."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_INTRO_TALK", "You're back. And with all your limbs too."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_INTRO_TALK", "Blow up anyone special lately?"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_INTRO_TALK", "See any good blasts out there in the Gungeon?"); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_INTRO_TALK", "Want a bomb? I've got bombs. Let's talk."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_INTRO_TALK", "Bombs? Bombs? Bombs? You want it? It's yours, my friend- as long as you have enough cash."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_ATTACKED_TALK", "Watch it buster."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_ATTACKED_TALK", "No need to be jealous."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_ATTACKED_TALK", "You're gonna blow your chances."); ETGMod.Databases.Strings.Core.AddComplex("#BOOMHILDR_ATTACKED_TALK", "I can bring this whole chamber down on our heads, and you're attacking me?"); List <int> LootTable = new List <int>() { 108, //Bomb 109, //Ice Bomb 460, //Chaff Grenade 66, //Proximity Mine 308, //Cluster Mine 136, //C4 252, //Air Strike 443, //Big Boy 567, //Roll Bomb 234, //iBomb Companion App 438, //Explosive Decoy 403, //Melted Rock 304, //Explosive Rounds 312, //Blast Helmet 398, //Table Tech Rocket 440, //Ruby Bracelet 601, //Big Shotgun 4, //Sticky Crossbow 542, //Strafe Gun 96, //M16 6, //Zorgun 81, //Deck4rd 274, //Dark Marker 39, //RPG 19, //Grenade Launcher 92, //Stinger 563, //The Exotic 129, //Com4nd0 372, //RC Rocket 16, //Yari Launcher 332, //Lil Bomber 180, //Grasschopper 593, //Void Core Cannon 362, //Bullet Bore 186, //Machine Fist 28, //Mailbox 339, //Mahoguny 478, //Banana NitroBullets.NitroBulletsID, AntimatterBullets.AntimatterBulletsID, BombardierShells.BombardierShellsID, Blombk.BlombkID, Nitroglycylinder.NitroglycylinderID, GunpowderPheromones.GunpowderPheromonesID, RocketMan.RocketManID, ChemGrenade.ChemGrenadeID, InfantryGrenade.InfantryGrenadeID, BomberJacket.ID, Bombinomicon.ID, MagicMissile.ID, GrenadeShotgun.GrenadeShotgunID, Felissile.ID, TheThinLine.ID, RocketPistol.ID, Demolitionist.DemolitionistID, HandMortar.ID, FireLance.FireLanceID, DynamiteLauncher.DynamiteLauncherID, BottleRocket.ID, NNBazooka.BazookaID, BoomBeam.ID, Pillarocket.ID, }; BoomhildrLootTable = LootTableTools.CreateLootTable(); foreach (int i in LootTable) { BoomhildrLootTable.AddItemToPool(i); } GameObject boomhildrObj = ItsDaFuckinShopApi.SetUpShop( "Boomhildr", "omitb", new List <string>() { "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_idle_001", "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_idle_002", "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_idle_003", "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_idle_004", "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_idle_005", }, 7, new List <string>() { "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_talk_001", "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_talk_002", }, 3, BoomhildrLootTable, CustomShopItemController.ShopCurrencyType.COINS, "#BOOMHILDR_GENERIC_TALK", "#BOOMHILDR_STOPPER_TALK", "#BOOMHILDR_PURCHASE_TALK", "#BOOMHILDR_NOSALE_TALK", "#BOOMHILDR_INTRO_TALK", "#BOOMHILDR_ATTACKED_TALK", new Vector3(0.5f, 4, 0), ItsDaFuckinShopApi.defaultItemPositions, 1f, false, null, null, null, null, null, null, null, null, true, false, null, true, "NevernamedsItems/Resources/NPCSprites/Boomhildr/boomhildr_mapicon", true, 0.1f ); PrototypeDungeonRoom Mod_Shop_Room = RoomFactory.BuildFromResource("NevernamedsItems/Resources/EmbeddedRooms/BoomhildrRoom.room").room; ItsDaFuckinShopApi.RegisterShopRoom(boomhildrObj, Mod_Shop_Room, new UnityEngine.Vector2(9f, 11)); }
public static void Init() { ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "I sell, yes, you! Buy! Cash yes money yes yes yes!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "Rusty sells trash people throw at him. Make easy money. Heheh. Fools."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "You want to talk to Rusty? Nobody ever talks to Rusty."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "I used to be taaaaall once, yes, yes. Taaaall, and red. Red."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "They laugh at Rusty, yes... they all laugh..."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "Rusty has seen things... things you are not ready to see."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "Chambers lurk below. Places you've never seen. Perhaps you will be ready one day, yes."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "Don't trust the mad bullet Alhazard. Rusty trusted him, and is now Rusty."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "What is it like. To have skin. Rusty wonders?"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "One day you and Rusty will be not so different, rustythinks yes."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_GENERIC_TALK", "One day, the skies will run black with the ichor of ages, and all will be unloaded... what?"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_STOPPER_TALK", "You are boring. Rusty is bored yes bored no yes"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_STOPPER_TALK", "Rusty has no more to say to you, no, no."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_STOPPER_TALK", "Mmmmm, yesyesyesyesyesyesyes."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_PURCHASE_TALK", "YesYes! Deal Yes! Buy!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_PURCHASE_TALK", "A good choice, yes!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_PURCHASE_TALK", "A poor choice, yes!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_PURCHASE_TALK", "Rusty lives another day."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_PURCHASE_TALK", "Rusty will buy a new can of polish!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_NOSALE_TALK", "No. TooCheap. Even for me, hehehehehehh"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_NOSALE_TALK", "Cash, upfront. No credit."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_NOSALE_TALK", "Rusty no give credit. You come back when you're richer!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_INTRO_TALK", "Oh! You are back! Yes! Heheh! BuyBuy!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_INTRO_TALK", "You Live! Rusty is Glad! Yes!"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_INTRO_TALK", "Wallet person returns, yes, with wallet gold?"); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_ATTACKED_TALK", "Rusty no die. Rusty live forever."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_ATTACKED_TALK", "If killing Rusty was that easy, Rusty would be dead."); ETGMod.Databases.Strings.Core.AddComplex("#RUSTY_ATTACKED_TALK", "Rusty think you are a %&**@. Yes."); List<int> LootTable = new List<int>() { 120, //Armour 224, //Blank 127, //Junk 558, //Bottle 108, //Bomb 109, //Ice Bomb 66, //Proximity Mine 308, //Cluster Mine 136, //C4 366, //Molotov 234, //iBomb Companion App 77, //Supply Drop 403, //Melted Rock 432, //Jar of Bees 447, //Shield of the Maiden 644, //Portable Table Device 573, //Chest Teleporter 65, //Knife Shield 250, //Grappling Hook 353, //Enraging Photo 488, //Ring of Chest Vampirism 256, //Heavy Boots 137, //Map 565, //Glass Guon Stone 306, //Escape Rope 106, //Jetpack 487, //Book of Chest Anatomy 197, //Pea Shooter 56, //38 Special 378, //Derringer 539, //Boxing Glove 79, //Makarov 8, //Bow 9, //Dueling Pistol 202, //Sawed Off 122, //Blunderbuss 12, //Crossbow 31, //Klobbe 181, //Winchester Rifle 327, //Corsair 577, //Turbo Gun 196, //Fossilized Gun 10, //Mega Douser 363, //Trick Gun 33, //Tear Jerker 176, //Gungeon Ant 440, //Ruby Bracelet //MY ITEMS MistakeBullets.MistakeBulletsID, TracerRound.TracerRoundsID, IronSights.IronSightsID, GlassChamber.GlassChamberID, BulletBoots.BulletBootsID, DiamondBracelet.DiamondBraceletID, PearlBracelet.PearlBraceletID, RingOfAmmoRedemption.RingOfAmmoRedemptionID, MapFragment.MapFragmentID, GunGrease.GunGreaseID, LuckyCoin.LuckyCoinID, AppleActive.AppleID, SpeedPotion.SpeedPotionID, ShroomedGun.ShroomedGunID, Glock42.Glock42ID, DiscGun.DiscGunID, Purpler.PurplerID, TheLodger.TheLodgerID, HeatRay.HeatRayID, }; RustyLootTable = LootTableTools.CreateLootTable(); foreach (int i in LootTable) { RustyLootTable.AddItemToPool(i); } GameObject rustyObj = ItsDaFuckinShopApi.SetUpShop( "Rusty", //Name "omitb", //ModName new List<string>() //Idle Sprite Paths { "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_001", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_002", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_003", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_004", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_005", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_idle_006", }, 12, //Idle FPS new List<string>() //Talk Sprite Paths { "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_talk_001", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_talk_002", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_talk_003", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_talk_004", "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_talk_005", }, 12, //Talk FPS //Loot Table RustyLootTable, //Currency CustomShopItemController.ShopCurrencyType.COINS, //Dialogue Strings "#RUSTY_GENERIC_TALK", "#RUSTY_STOPPER_TALK", "#RUSTY_PURCHASE_TALK", "#RUSTY_NOSALE_TALK", "#RUSTY_INTRO_TALK", "#RUSTY_ATTACKED_TALK", //Text Box Offset new Vector3(1, 1.5f, 0), //Item positions ItsDaFuckinShopApi.defaultItemPositions, //Price mult 0.5f, //Give Stats on Purchase false, //Stats to give on purchase null, //Custom Can Buy null, //Custom Remove Currency null, //Custom Price null, //On Purchase RustyBuy, // On Steal RustySteal, //Currency Icon null, //Currency name null, //Can be robbed true, //Has Carpet true, //Carpet Sprite "NevernamedsItems/Resources/NPCSprites/Rusty/rustycarpet", //Has Minimap Icon true, //Minimap icon path "NevernamedsItems/Resources/NPCSprites/Rusty/rusty_mapicon", //Add to bello shop true, 0.1f ); PrototypeDungeonRoom Mod_Shop_Room = RoomFactory.BuildFromResource("NevernamedsItems/Resources/EmbeddedRooms/RustyRoom.room").room; ItsDaFuckinShopApi.RegisterShopRoom(rustyObj, Mod_Shop_Room, new UnityEngine.Vector2(7f, 6)); }
public static void Init() { ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "The Gungeon is a tough place, it pays to have thick skin."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "My pepaw always told me to stay prepared. So that's what I do."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "The cost of being heavily armoured is never letting anyone in."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "Names Ironside. I specialise in armour and protective supplies."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "Like the carpet? I got it custom made."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "Blanks are all well and good, but you're not always going to have them. Ask yourself, do you want bullets goin' straight to your heart(s)?"); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "I have done and I have dared, for everything to be prepared."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "Did you see that tarnished old slug rooting around in my garbage? What a freak."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_GENERIC_TALK", "Armour up Gungeoneer, the road ahead is long and the bullets don't get any softer."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_STOPPER_TALK", "No more chit-chat."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_STOPPER_TALK", "I don't have time to talk longer."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_STOPPER_TALK", "Got things to be, places to do."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_PURCHASE_TALK", "Pleasure doin' business with you."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_PURCHASE_TALK", "Pays to be prepared."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_PURCHASE_TALK", "Armoured and ready!"); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_NOSALE_TALK", "You'd better get out there and find some more armour."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_NOSALE_TALK", "Sorry pal, no shields no sale."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_INTRO_TALK", "AVAST FIEND- Oh, no. It's just you."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_INTRO_TALK", "Staying safe out there?"); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_INTRO_TALK", "Welcome back, you're looking beat up."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_INTRO_TALK", "Good grief... I didn't know someone could have that many bruises."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_ATTACKED_TALK", "Hah, no way you're getting through this armour!"); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_ATTACKED_TALK", "Nice try, but one of us is squishy and it ain't me."); ETGMod.Databases.Strings.Core.AddComplex("#IRONSIDE_ATTACKED_TALK", "You're gonna wish you hadn't done that one day."); List <int> LootTable = new List <int>() { 160, //Gunknight Stuff 161, 162, 163, 450, //Armor Synthesizer 147, //Armor of Thorns 64, //Potion of Lead Skin 65, //Knife Shield 380, //Betrayers Shield 447, //Shield of the Maiden 634, //Crisis Stone 111, //Heavy Bullets 256, //Heavy Boots 564, //Full Metal Jacket 290, //Sunglasses 312, //Blast Helmet 314, //Nanomachines 454, //Hazmat Suit 598, //Stone Dome 545, //AC-15 178, //Crestfaller 154, //Trashcannon FullArmourJacket.FullArmourJacketID, KnightlyBullets.KnightlyBulletsID, ArmourBandage.ArmourBandageID, GoldenArmour.GoldenArmourID, ExoskeletalArmour.MeatShieldID, ArmouredArmour.ArmouredArmourID, KeyBullwark.KeyBulwarkID, TinHeart.TinHeartID, HeavyChamber.HeavyChamberID, TableTechInvulnerability.TableTechInvulnerabilityID, LiquidMetalBody.LiquidMetalBodyID, HornedHelmet.HornedHelmetID, LeadSoul.LeadSoulID, GSwitch.GSwitchID, MaidenRifle.MaidenRifleID, RapidRiposte.RapidRiposteID, Converter.ConverterID, }; IronsideLootTable = LootTableTools.CreateLootTable(); foreach (int i in LootTable) { IronsideLootTable.AddItemToPool(i); } GameObject ironsideObj = ItsDaFuckinShopApi.SetUpShop( "Ironside", "omitb", new List <string>() { "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_idle_001", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_idle_002", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_idle_003", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_idle_004", }, 8, new List <string>() { "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_001", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_002", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_003", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_004", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_005", "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_talk_006", }, 12, IronsideLootTable, CustomShopItemController.ShopCurrencyType.CUSTOM, "#IRONSIDE_GENERIC_TALK", "#IRONSIDE_STOPPER_TALK", "#IRONSIDE_PURCHASE_TALK", "#IRONSIDE_NOSALE_TALK", "#IRONSIDE_INTRO_TALK", "#IRONSIDE_ATTACKED_TALK", new Vector3(1, 2.5f, 0), ItsDaFuckinShopApi.defaultItemPositions, 1f, false, null, Ironside.IronsideCustomCanBuy, Ironside.IronsideCustomRemoveCurrency, Ironside.IronsideCustomPrice, IronsideBuy, null, "NevernamedsItems/Resources/NPCSprites/Ironside/armourcurrency_icon.png", "Armor", true, true, "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_carpet", true, "NevernamedsItems/Resources/NPCSprites/Ironside/ironside_mapicon", true, 0.1f ); PrototypeDungeonRoom Mod_Shop_Room = RoomFactory.BuildFromResource("NevernamedsItems/Resources/EmbeddedRooms/IronsideRoom.room").room; ItsDaFuckinShopApi.RegisterShopRoom(ironsideObj, Mod_Shop_Room, new UnityEngine.Vector2(7f, 9)); }