-
Posts
300 -
Joined
-
Last visited
Everything posted by sukeban
-
Mwaha, finally got to put some of your suggestions into effect. I was able to use conditions on the running animations, so that nuisance is definitely solved :) Epic huge "Thank You" for leading this horse to water! I wasn't quite able to get the SendAnimationEvent function to work, but I have hope that it's on the right track as per the trace logs. I'll see if I can't work a bit more on that and see if I can get it functional. In the meantime, I've another question. In another script, I have been attempting to advance time when crafting by a set amount per item material and equipment type. I've been trying to do this via my standard "quest --> alias --> script" procedure, but I can't get the Event OnStoryCraftItem to fire properly. I wonder if this is because it is intended for placement on an activator, say, a forge or workbench, and not on an actor. But even when I attached the script to the forge furniture in the CK, nothing happened when I crafted an item. Likely, I am misunderstanding the purpose of this function. If this is true, what sort of function should I use to achieve an "on item crafted" condition. On Activate seems the closest, but I don't know how to ensure that the PC actually crafts something instead of just activating the furniture. I include my incomplete script, if it is useful: Scriptname TimeCraftScript extends Quest ;WORK ;Script first identifies crafted material type and adds a fixed amount to the game time. ;Next it adds to that value depending on the piece of equipment created Event OnStoryCraftItem(ObjectReference akBench, Location akLocation, Form akCreatedItem) Debug.Messagebox("At least the OnEvent works :D") float GameTime = GameHour.GetValue() If (akCreatedItem.HasKeyword(ArmorMaterialFur)) float NewTime = GameTime If (akCreatedItem.HasKeyword(ArmorCuirass)) float ModTime = NewTime + 4 GameHour.Mod(ModTime) ElseIf (akCreatedItem.HasKeyword(ArmorBoots)) || (akCreatedItem.HasKeyword(ArmorGauntlets)) float ModTime = NewTime + 1 GameHour.Mod(ModTime) ElseIf (akCreatedItem.HasKeyword(ArmorHelmet)) float ModTime = NewTime + 2 GameHour.Mod(ModTime) Else float ModTime = NewTime + 3 GameHour.Mod(ModTime) EndIf ElseIf (akCreatedItem.HasKeyword(ArmorMaterialHide)) float NewTime = GameTime + 1 If (akCreatedItem.HasKeyword(ArmorCuirass)) float ModTime = NewTime + 4 GameHour.Mod(ModTime) ElseIf (akCreatedItem.HasKeyword(ArmorBoots)) || (akCreatedItem.HasKeyword(ArmorGauntlets)) float ModTime = NewTime + 1 GameHour.Mod(ModTime) ElseIf (akCreatedItem.HasKeyword(ArmorHelmet)) float ModTime = NewTime + 2 GameHour.Mod(ModTime) Else float ModTime = NewTime + 3 GameHour.Mod(ModTime) EndIf EndIf EndEvent ;PROPERTIES ;TIME VARS GlobalVariable Property GameHour Auto ;ARMOR TYPE VARS Keyword Property ArmorMaterialFur Auto Keyword Property ArmorMaterialHide Auto ;ARMOR PIECE VARS Keyword Property ArmorCuirass Auto Keyword Property ArmorBoots Auto Keyword Property ArmorGauntlets Auto Keyword Property ArmorHelmet Auto Keyword Property ArmorShield Auto NOTE: It extends "Quest" right now, but I've changed it to just about everything ( :laugh:) and haven't gotten any of them to work.
-
the currency system needs a revamp... here's how
sukeban replied to jakdaryper's topic in Skyrim's Skyrim LE
I do really find myself liking the idea of daily/monthly upkeep paid for number/quality of houses/housecarls/followers/dogs/etc. I am far from a script genius, but that seems to be like something that is very much doable in a mod. The problem, to me, seems to be when ideas are expanded from one Hold to the entirety of Skyrim. Whereas ideas might be simple to implement on a Hold-by-Hold basis, requiring each Hold to react dynamically to the others would seem to require... a whole lot of time and effort. The Morrowind-style bartering resonates with me more than ideas for banking. Given the era, I wouldn't imagine that banks would even exist in places outside of Solitude, Markarth, and, perhaps, a very much corrupted bank of Riften. The principal destroyer of Skyrim's economy, at least as far as I am concerned, is the veritable avalanche of high-level enchanted gear that buries the PC from level 25 and up. This influx of gold to the PC (that is, if they bother to cart it all back to town) from this moment on is truly insane and completely destabilizes the economy. Truly, you could script an entire inflationary bust in Riften from the PC's spoils carted away from Avanchul'zel. Any economic mod should tamp down on this loot overflow and increase the scarcity of all currency, whether that ultimately be copper, silver, dwemer metal or gold. OTOH, we could initiate a pro-inflationary Skyrim, wherein the cost of inns balloons to 500 gold per night when the PC is using enchanted ebony swords as toothpicks. I do like the idea of localized "taxes" or perhaps just increased upkeep for units hired in that area. It would be nice to see the "property taxes" levied in Riften (say, Florida) vs. the taxes levied in Solitude (say, New York) to be radically divergent. That would give an extra incentive for the PC to base himself in tax havens, even if that meant that the overall quality of life was lower. Above all, however, it would be maximally ace to be able to buy and own shops in Skyrim. Even if the shop was on autopilot after acquisition, it would give far more depth and complexity to the whole "invest" merchanic, which is quite forgettable in vanilla. Such a mod would likely have to drastically increase the number of NPCs and rival shops in the world, but I could definitely envision that as being a winning mod for both gameplay and immersion. -
Hiya Jesse_Dylan Not to shamelessly promote my own mod or anything (:D), but I've a small mod that probably contains the sort of functionality that you are looking for, it's here: http://skyrim.nexusmods.com/downloads/file.php?id=17002 Basically, it starts you at level zero at all of your non-racial bonus skills and gives you only +5 and +10 to those skills that you receive starting bonuses in. Apart from that, I've modified the leveling formula (as well as the leveling formulas for many of the individual skills) to accommodate this new arrangement. The result is that the PC levels much more slowly in the early going (though not ridiculously slowly) and slightly faster through the mid- and upper-levels. I can personally guarantee you that you will not make level four by clearing out Embershard Mine. Maybe you will be level two, maaaaaybe. Might be your cup of tea, might not. If you are so inclined, you can change the leveling formula to suit your own taste as well. The normal leveling formula is: XP Required for Next Level = Base + (Current Level + 1)Multiplier In vanilla, the Base variable is 75 and the Multiplier variable is 25, making for a total of 100 XP needed to make your first level These values are housed in GMSTs in the CK, and are: fLevelUpBase fLevelUpMult You can use those values to scale the formula to whatever you like. XP is gained whenever you level up a skill, with the amount of XP gained being equal to the skill rank that you gained, so going from level 19 --> 20 in Speechcraft would net you 20XP toward making your next character level. Hope that helps!
-
@Leeira For making the changes persistent on saves, try using ForceActorValue. I find myself constantly having to check back to see which stats are persistent with only Set and which ones require full Force so to speak (ba-dum-chh). You can find a handy reference for it here: http://www.creationkit.com/Actor_Value_List . It's definitely saved me a lot of headache.
-
fg, I've another question that perhaps you may hold the answer to. You know how when the PC is over-encumbered they are unable to run or sprint? How exactly is that coded, and do you know, perchance, where I might find that Source script? I've checked many of the Actor-related scripts and cannot for the life of me find anything that deals with weight or encumbrance. I ask because the sprinting animation looks ridiculous when the PC's movespeed is low. I would like to disable sprinting altogether when the PC dips below a certain SpeedMult threshhold (but is not yet technically over-encumbered). I've also noticed that when modifying the SpeedMult on the PC, that the new speed doesn't register until the animation is altered (like going into sneak or drawing a weapon). This results in somewhat jerky speed transitions. Is there any function I can call after the OnItemAdded that will update the animation --> which would update the speed more smoothly and immediately? Also, do you have any thoughts as to the feasibility of a real-time lockpicking/pickpocket mod? I've always thought that these trees would have been about one million times more useful if time continued to pass when you were busy engaging in these activities. It also just strikes me as a lot of fun, worrying about a real-time passing guard might detect you. I'd imagine that such a mod would be either shockingly simple or stupidly difficult to achieve.
-
@Leeira I've found that adjusting movement speeds dynamically is... kind of wonky with the way that animations seem to work/are registered. Basically, your movespeed will not update (even if it does as a statistic in console) until AFTER your character enters into another animation type. What I mean is that a character who just went from 100 --> 90 movespeed won't actually start moving at 90 until he enters sneak/draws a weapon/starts sprinting, etc. Then the new value will be recognized and the speed will be modified. It still "works" and, I mean, I'm going to keep it just cause I like the idea. But it is kind of weird. Maybe somebody smarter than I when it comes to scripting + animations knows of a way to have the new animation register at the same time as the updated movespeed? Anyway, the way that I did the scaling was the multiply the %carryweight by a given range based on the race and gender of the PC. Orcs are affected much less by carrying a higher percentage, Wood Elves much more, etc. Originally, I had it something like the inverse of the % multiplied by the movespeed, but that was ridiculous. The percentage way is better IMO because it gives latitude to PCs with higher carryweights. There is more of a benefit to investing in capacity versus health or magicka. Your "No Armor Swapping" idea sounds great, too. Sadly though, I have literally NO idea how to implement that. I'm sure somebody around here does though. @tox2ik Gameplay versus realism, the problem, as we all know, with no real solution. I think that you're 100% correct that moving faster likely results in better gameplay, but becoming extremely slow when carrying heavy things is far more realistic. I think that probably both Leeira and myself are trying to reach some sort of an accommodation (though probably a bit less myself) with gameplay so that our mods aren't just total PITAs to play. I've always just liked the idea of having a "loadout" or something when adventuring (too much Resident Evil back in the day) so that choosing your loot pickups is almost as important as the fights themselves. I also thought that the vanilla movement speeds were WAY too fast and that jogging across Skyrim without draining stamina was show-stoppingly unrealistic. So I'd like to have characters walk. Or jog slowly. Or buy a horse. @Anybody who knows One other thing, is it possible to limit the amount of movement options available to the PC? Like, if you are carrying 90/100 inventory you can no longer sprint. At lower movespeeds the sprint animation looks ridiculous because you still animated as running fast but you go practically nowhere. I would like to simply remove the option to sprint via a variable. I know that this IS possible because that's what happens when you are overencumbered in vanilla, but I have yet to find the Source script that contains this functionality. If anybody knows, I would be extremely happy to hear about it :)
-
By the Nine, you've done it! I added an Alias to the Player and moved the script from the main quest script area over to the Alias. Works like a charm, updating only when the PC adds/removes an item from inventory. Movement accelerates and decelerates seamlessly. You, Sir, truly ARE the Patron Saint of Scripting. I feel like lighting innumerable hordes of votive candles in an alcove or burning kilos of incense in your honor. Sadly, I can't even honor you with a humble kudo, as I've long since turned one over to you. I guess the mental image of an anonymous fellow modder jumping around and playing air-base to: ...will have to suffice. In any case, an incomprehensibly enormous "Thank you!" for helping me out. I'm sure I'll run into more problems in the future. It is hugely reassuring to know that scripting geniuses like you are members of the Nexus.
-
Man alive, this is such a headache. I can't believe that I am finding it this horrifically difficult to simply call a function from another script. I have literally copy-pasted your: (MyQuest as MyQuestScript).Fragment_0() Into a script attached to my quest, a script that would like to call the function Fragment_0() from the QF script also attached to the quest. Changing your code to suit my circumstance, I end up with: (HCE as QF_HCE_02000D62).Fragment_0() When I attempt to compile this (just to see if it works) it gives me, "Missing EOF at RPAREN" and specifying the first ( before HCE. When I noobishly obey it and put it within a function or event block, it gets mad and says it was expected the function ID instead of the (. Obviously, I have gravely misunderstood something in your directions. I was reading an article on The Engineering Guild re: calling functions and the author gave the same directions as you, but cryptically mentions that, "Now in the box marked begin or end, we type this [the above code]." In any case, that's totally lost on me. I've never seen such a box in any of the Quest tab menus. But apparently the code doesn't go in the actual script? Massively apologies for being such a moron. I hadn't really thought it necessary to become familiar with how quests work or even with aliases because I hadn't/don't really care to create quests/dialogues/items/npcs, etc. Joke's on me, however, as those concepts seem to crop up everywhere. In any case, if you could direct me as to where to put your above code (modded for circumstance, of course), I would be so much relieved.
-
Many thanks for the help so far! I've an okay grasp of how Papyrus should work "in theory," but often find that my actual skill at making it happen often just doesn't cut it. I am a serious scripting lightweight as yet, but I'd like to say that I've gotten a lot better for the three or so weeks that I've been at it :facepalm: In any case, this is the function in question--just a quest fragment from the encumbrance portion of a mod I'm working on. It modifies the PC's speed based how much they are carrying vis-a-vis their max carryweight. It takes race and gender into consideration (ties into another mod of mine giving unique stats to different races/genders). It works well upon load. It also works with the previously mentioned RegisterForUpdate avalanche that backs up Papyrus. I only want it to fire when a player actually modifies their inventory, rather than every arbitrary amount of time. Hence the preoccupation with OnItemAdded etc. Where would be the best place to locate: a) the Event trigger and b) the actual function. I am doubting that the proper place is in the quest fragment, but I am very unfamiliar with aliases, etc. You can see the OnItemAdded portion hanging out outside of the function block, doing absolutely nothing (but making for easy copy-pasta). ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 2 Scriptname QF_HardcoreEncumbrance_02000D62 Extends Quest Hidden ;BEGIN FRAGMENT Fragment_0 Function Fragment_0() ;BEGIN CODE ;Hardcore Encumbrance ;VARIABLES AND CASTING ;RACE ActorBase PlayerBase = Game.GetPlayer().GetBaseObject() as ActorBase Race PlayerRace = PlayerBase.GetRace() ;Debug.Messagebox("You are a " + PlayerRace) ;GENDER ActorBase PlayerSex = Game.GetPlayer().GetBaseObject() as ActorBase int PlayerGender = PlayerSex.GetSex() Debug.Messagebox("You are a " + PlayerGender) ;CARRYWEIGHT + INVENTORY int Carryweight = Game.GetPlayer().GetActorValue("Carryweight") as int ;Debug.Messagebox("Your max carryweight is " + Carryweight + " units") int Inventory = Game.GetPlayer().GetActorValue("InventoryWeight") as int ;Debug.Messagebox("Your current inventory weight is " + Inventory + " units") ;ENCUMBRANCE MULT float EncumbranceMult = Inventory / Carryweight as float ;Debug.Messagebox("Your current EncumbranceMult is " + EncumbranceMult) ;ENCUMBRANCEMODS ;RACIAL BASE SPEED (SPEEDMULT) float EncumbranceModOrc = EncumbranceMult*8 ;80 float EncumbranceModNord = EncumbranceMult*12 ;85 float EncumbranceModArgonian = EncumbranceMult*16 ;90 float EncumbranceModImperialAndHighElf = EncumbranceMult*20 ;95 float EncumbranceModBreton = EncumbranceMult*24 ;100 float EncumbranceModRedguardAndDarkElf = EncumbranceMult*28 ;105 float EncumbranceModKhajiit = EncumbranceMult*32 ;110 float EncumbranceModWoodElfMale = EncumbranceMult*36 ;115 float EncumbranceModWoodElfFemale = EncumbranceMult*40 ;120 ;MOVESPEEDMODS float MovespeedModOrc = 80 - EncumbranceModOrc float MovespeedModNord = 85 - EncumbranceModNord float MovespeedModArgonian = 90 - EncumbranceModArgonian float MovespeedModImperialAndHighElf = 95 - EncumbranceModImperialAndHighElf float MovespeedModBreton = 100 - EncumbranceModBreton float MovespeedModRedguardAndDarkElf = 105 - EncumbranceModRedguardAndDarkElf float MovespeedModKhajiit = 110 - EncumbranceModKhajiit float MovespeedModWoodElfMale = 115 - EncumbranceModWoodElfMale float MovespeedModWoodElfFemale = 120 - EncumbranceModWoodElfFemale ;WORK If EncumbranceMult > 1.25 Game.GetPlayer().ForceActorValue("SpeedMult", 1.0) ;Debug.Messagebox("You are too overencumbered to move!") Else ;Debug.Messagebox("You are able to move!") If PlayerRace == OrcRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModOrc) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModNord) EndIf ElseIf PlayerRace == NordRace ;Debug.Messagebox("You are a Nord, again!") If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModNord) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModArgonian) ;Debug.Messagebox("You are a Nord female, again!") EndIf ElseIf PlayerRace == ArgonianRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModArgonian) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModImperialAndHighElf) EndIf ElseIf PlayerRace == ImperialRace || HighElfRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModImperialAndHighElf) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModBreton) EndIf ElseIf PlayerRace == BretonRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModBreton) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModRedguardAndDarkElf) EndIf ElseIf PlayerRace == RedguardRace || DarkElfRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModRedguardAndDarkElf) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModKhajiit) EndIf ElseIf PlayerRace == KhajiitRace If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModKhajiit) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModWoodElfMale) EndIf Else If PlayerGender == 0 Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModWoodElfMale) Else Game.GetPlayer().ForceActorValue("SpeedMult", movespeedModWoodElfFemale) EndIf EndIf EndIf ;Debug.messagebox("ACK WTF") ;END CODE EndFunction ;END FRAGMENT ;END FRAGMENT CODE - Do not edit anything between this and the begin comment Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) Fragment_0() RegisterForSingleUpdate(1) EndEvent Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) Fragment_0() RegisterForSingleUpdate(1) EndEvent ;PROPERTIES Race Property OrcRace Auto Race Property NordRace Auto Race Property ArgonianRace Auto Race Property ImperialRace Auto Race Property RedguardRace Auto Race Property DarkElfRace Auto Race Property KhajiitRace Auto Race Property BretonRace Auto Race Property HighElfRace Auto Race Property WoodElfRace Auto
-
@Leeira This mod sounds like a great idea! I've been working on a similar-themed mod also using the limited items idea. I'm going one two-handed (bow considered two-handed), one one-handed, and one dagger. As well as one of each weight class armor. Also adding %maxcarryweight movespeed scaling, a universal carryweight reduction (determined by race/gender, but usually ~80), and reducing the weight of worn weapons and armor. I guess it could be considered to be the slightly more masochistic younger brother to your mod. In any case, I'd be interested as to how you've handled a) the issue of Misc. items and b) limited item implementation. I've been wrestling with the in-game sizes of Misc. items to try and achieve some sort of "realistic" prohibition on carried numbers, whilst not having to micromanage every Misc. item that can be picked up. I might just bite the bullet and assign new keywords to Misc. items (and probs potions while I'm at it) breaking them into large, med, and small and determining carried numbers like that. That's seriously groan material though, which is why I'm curious haha. I've also got it so that prohibited items are automatically removed from inventory, which IS slightly annoying if you are the PC. It makes it hard to pass gear to your companion without dropping gear, passing, picking up, dropping, passing, etc. Not quite stellar gameplay. I'm thinking of reducing movespeed to 1 (because 0 defaults to 100) when holding items "in violation" of the carried limit, so that you can manage your inventory without hassle, but you can't fast travel or functionally DO anything worthwhile without dropping something. Again, just curious as to how you've grappled with that. I am by far a scripting novice so I am always interested in solutions that have been proven to work well :D Also, these suggestions for a "logistics" hireling as seriously cool. That would be amazing if you could find a way to implement that. kuertee -- That idea for mod config. is really, really good. That way everybody can "have their cake..." so to speak.
-
Greetings fg109. I aplogize, I never got to thank you before the "Need a Script" thread was closed. You wrote a fantastic "Timescale increases while crafting" script that I've found absolutely essential. So anyway, massive THANK YOU(!!) for your past heroics. As for OnContainerChanged, I feared that was indeed the case. So you are saying that I could write something like: Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) Fragment_0() RegisterforSingleUpdate(1) EndEvent Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) Fragment_0() RegisterforSingleUpdate(1) EndEvent Would that be legit to not specify any conditional parameters? Basically, I'd want this function Fragment_0() (Papyrus Quest Fragment) to update whenever the PC's inventory changes. I chose RegisterforSingleUpdate because I only want it to happen once per inventory update. (Also, I've never been able to get Events to work within a Papyrus fragment block. I assume this is because it is inside of another function. Is there a way to call the Event from outside of the fragment block, but from inside of the quest script? Or would this require use of the kMyQuest and another script added to the quest?) Previously, the only way I could get this Fragment to update was when I had something like: Fragment_0() RegisterForUpdate(10) ...within the fragment function block of Fragment_0(). When it fired it would update at light-speed, completely ignoring the specified 10 real-time second parameter. Whenever I tried to use it with OnUpdate, something like: Fragment_0() RegisterForUpdate(10) Event OnUpdate() Fragment_0() EndEvent ...it wouldn't do anything, i.e. it wouldn't update even once. I just KNOW that I am butchering this, but I tried to emulate what I saw in other Source scripts. The Wiki example scripts always SUCK and are just copy-pasted from the scripts that the functions are defined in. In any case, if you have any advice on using OnUpdate, I would again be immensely grateful :)
-
I totally do this too! And I feel your pain on the random minimap arrows. What I usually do is just to keep all of my quests unchecked on the journal page. If they're unchecked they won't show up on your map either. At least, I believe this to be true. It's been sort of a while since I've done actual quests in Skyrim instead of playtesting, but that's what I remember doing, and, I think, working. If that doesn't work then another enterprising modder should definitely address this. I'd imagine that it should be a relatively simple fix.
-
@thompsonar: I know of two such mods that can do this for you, though they come with the gigantic caveats that they are also much more than a disguise mod. I'll mention my own, SkBBP, first :biggrin: at: http://skyrim.nexusmods.com/downloads/file.php?id=16715 It's mainly a crafting and item mod, but one of the optionals (Perk Balance) contains a modified Speechcraft tree with a perk to allow the PC to join the Forsworn, Thalmor, Stormcloak, Imperial, and Bandit factions by wearing their appropriate armor. The second is SkyRe by T3nd0. It's mainly a perk and gameplay overhaul mod (for now), but it has a modified Sneak tree which allows you to also achieve the above functionality. SkyRe: http://skyrim.nexusmods.com/downloads/file.php?id=9286 So yeah, both are much more than a simple disguise mod. But, to answer your question--yes, a disguise mod is very possible and has been created already, by both T3nd0 and myself. Maybe one or both of us will break it out into a standalone mod, but for now that's the best that I know of (the above guard mod also looks nice). I hope that you find this answer at least somewhat helpful :)
-
Greetings all. I've taken the liberty of starting this thread because it seems like something sorely needed on these forums. I've also selfishly got a scripting conundrum, so that motivates me as well :biggrin: Hopefully this thread can become a place where novice scripters and script geniuses can come together to help each other make kickass mods. In any case, I've been having some issues getting OnEvent functions (are they even functions?) to work properly. I have primarily been working in Papyrus fragments, but even within run of the mill scripts they have given me problems. This has given rise to a more fundamental question of, "What even are OnEvent functions?" I know that when certain in-game events happen, the engine sends the info to Papyrus for potential use in scripts. This information is always generated, it is merely the job of our script to tap into it. That much makes sense to me. What is more problematic is how these functions are used, and, specifically, to what objects they are attached for use in the game. -------- In my example, I have been trying to get Event OnContainerChanged to work with the PC as the container. However, this (as well as OnItemRemoved and OnItemAdded) seems to be a function written for placement on objects rather than containers, which, to me, seems counter-intuitive. I have used the following to try and obtain a positive condition for whenever the PC adds or drops an item from inventory: Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) Debug.Messagebox("Cocaine's one hell of a drug!") If akNewContainer || akOldContainer == Game.GetPlayer() Fragment_0() RegisterforSingleUpdate(5) Debug.Messagebox("Whatchu talkin' 'bout, Willis?") EndIfEndEvent The thing is, neither of the Debugs ever fire, which means that the OnContainerChanged event never fires. Does this have to be attached to EVERY item the game (that would be insane) or do I have to do some other gymnastics with using the PC as a quest alias or something entirely different. Moreover, is Game.GetPlayer() even a container (doubt it)? If not, what IS the PC as a container (inventory)? Does this being a fragment have anything to do with this? Additionally, RegisterForUpdate NEVER works properly for me. Whenever I have used it, it completely ignores he float aiInterval parameter and proceeds to update almost instantaneously, inevitably leading to backlogs and to save-game bloat (i.e. I can never use it in a mod). In any case, I sincerely thank anybody who can answer these questions. I try not to ask anything unless it has stymied me for at least a couple of days, and man alive, this definitely has. Consider this me shining the Bat Symbol into the nighttime Gotham sky.
-
Nevermind, I've solved it. I had to call the function from the BaseActor. Everything working like a champ now. Still, any ways to optimize the script would be appreciated, as I'm sure that any accomplished coder will look at it and o_O. I've been face-palming over and over again trying to get this script to work properly. It's a simple script that runs from a quest at the beginning of the game. It's intended to modify a new character's stats at the beginning of the game, based on gender and race. It's much longer (and, I'm sure, wildly inefficient), but this is what I have been testing and attempting to debug with. When I debug the GetRace (Debug.Messagebox("You are a " + GetRace()) call, it returns "You are a None!" So the call is returning none? ----------------------------------- ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname QF_LoreFriendlyStats_02000D62 Extends Quest Hidden ;BEGIN FRAGMENT Fragment_0 Function Fragment_0() ;BEGIN CODE ;Lore-Friendly Stats GetIsSex() If GetIsSex() == 0 Debug.Messagebox("You are a female!") GetpcisRace() If GetpcisRace() == OrcRace Debug.Messagebox("You are a female Orc!") Game.GetPlayer().ForceActorValue("Carryweight", 100) Game.GetPlayer().SetActorValue("Health", 180) Game.GetPlayer().SetActorValue("Stamina", 80) Game.GetPlayer().SetActorValue("Magicka", 40) Game.GetPlayer().ForceActorValue("SpeedMult", 85) Game.GetPlayer().SetActorValue("WeaponSpeedMult", 0.95) Game.GetPlayer().ForceActorValue("CombatHealthRegenMult", 0.85) Game.GetPlayer().SetActorValue("CombatStaminaRegenMult", 0.35) Game.GetPlayer().SetActorValue("CombatMagickaRegenMult", 0.23) Game.GetPlayer().ForceActorValue("CritChance", 1.0) Game.GetPlayer().SetActorValue("SpeechcraftMod", 0.0) ElseIf GetpcisRace() == NordRace Debug.Messagebox("You are a female Nord!") Game.GetPlayer().ForceActorValue("Carryweight", 90) Game.GetPlayer().SetActorValue("Health", 140) Game.GetPlayer().SetActorValue("Stamina", 120) Game.GetPlayer().SetActorValue("Magicka", 30) Game.GetPlayer().ForceActorValue("SpeedMult", 90) Game.GetPlayer().SetActorValue("WeaponSpeedMult", 1.05) Game.GetPlayer().SetActorValue("CombatHealthRegenMult", 0.80) Game.GetPlayer().SetActorValue("CombatStaminaRegenMult", 0.40) Game.GetPlayer().SetActorValue("CombatMagickaRegenMult", 0.23) Game.GetPlayer().ForceActorValue("CritChance", 6.0) Game.GetPlayer().SetActorValue("SpeechcraftMod", 5.0) Else Debug.MessageBox("You are a female Argonian!") Game.GetPlayer().ForceActorValue("Carryweight", 80) Game.GetPlayer().SetActorValue("Health", 120) Game.GetPlayer().SetActorValue("Stamina", 100) Game.GetPlayer().SetActorValue("Magicka", 130) Game.GetPlayer().ForceActorValue("SpeedMult", 95) Game.GetPlayer().SetActorValue("WeaponSpeedMult", 1.00) Game.GetPlayer().SetActorValue("CombatHealthRegenMult", 0.75) Game.GetPlayer().SetActorValue("CombatStaminaRegenMult", 0.35) Game.GetPlayer().SetActorValue("CombatMagickaRegenMult", 0.38) Game.GetPlayer().ForceActorValue("CritChance", 5.0) Game.GetPlayer().SetActorValue("SpeechcraftMod", -1.0) EndIf Else Debug.Messagebox("You are a male!") If GetpcisRace() == OrcRace Debug.Messagebox("You are a male Orc!") Game.GetPlayer().ForceActorValue("Carryweight", 120) Game.GetPlayer().SetActorValue("Health", 200) Game.GetPlayer().SetActorValue("Stamina", 100) Game.GetPlayer().SetActorValue("Magicka", 20) Game.GetPlayer().ForceActorValue("SpeedMult", 80) Game.GetPlayer().SetActorValue("WeaponSpeedMult", 0.90) Game.GetPlayer().SetActorValue("CombatHealthRegenMult", 0.90) Game.GetPlayer().SetActorValue("CombatStaminaRegenMult", 0.40) Game.GetPlayer().SetActorValue("CombatMagickaRegenMult", 0.18) Game.GetPlayer().ForceActorValue("CritChance", 0.0) Game.GetPlayer().SetActorValue("SpeechcraftMod", -1.0) ElseIf GetpcisRace() == NordRace Debug.Messagebox("You are a male Nord!") Game.GetPlayer().ForceActorValue("Carryweight", 110) Game.GetPlayer().SetActorValue("Health", 160) Game.GetPlayer().SetActorValue("Stamina", 140) Game.GetPlayer().SetActorValue("Magicka", 10) Game.GetPlayer().ForceActorValue("SpeedMult", 85) Game.GetPlayer().SetActorValue("WeaponSpeedMult", 1.00) Game.GetPlayer().SetActorValue("CombatHealthRegenMult", 0.85) Game.GetPlayer().SetActorValue("CombatStaminaRegenMult", 0.45) Game.GetPlayer().SetActorValue("CombatMagickaRegenMult", 0.18) Game.GetPlayer().ForceActorValue("CritChance", 5.0) Game.GetPlayer().SetActorValue("SpeechcraftMod", 4.0) EndIf EndIf ;END CODE EndFunction ;END FRAGMENT ;END FRAGMENT CODE - Do not edit anything between this and the begin comment Race Property OrcRace Auto Race Property NordRace Auto Race Property ArgonianRace Auto int function getissex() endfunction Race Function GetPCISRace() Native ----------------------- My issue is that the gender call works correctly, but that using any of the GetRace/GetIsRace/GetPCIsRace functions always return negative when I assign the Race properties in the CK. When they are unassigned, the calls always return positive. It seems that I do not know how this function actually works. I know it's supposed to return "1" if the statement is true, but it seems that there is something fundamentally wrong with how the game is processing what the called race even is. Extra frustrating is the Papyrus fragment, which seem to have their own bizarre rules versus a normal script. If anybody can assist with this, I will be 9999% grateful and will probs erect a statue to you in my hometown :D
-
One other thing that you might try, if you haven't already, is the use of the "unlock" console command on the locked door. Or, you could console yourself the key. From a role-playing perspective, I'd opt for the former option (your adventurer found the door mysteriously "unlocked" when he arrived mwaha). I've done this for Korvanjund on a character who wasn't going to take a side in the civil war. I'm sure that it totally messed up the civil war quest, but I didn't really care. If you used it to get into Saarthal, I'm sure that it would mess up the Winterhold quest as well, but--who cares if you never planned on joining to begin with? Finally, I sort of think that the "combine pieces" Galdur quest might actually be unaffected by doing this (though the only way to know for certain would be to look at the quest stages in the CK). I think the only the only thing that matters is that you have the requisite pieces and claw and that the battle is initiated on a trigger when you enter the chamber. If not, you could just console setstage for the quest bypassing the parts that you couldn't complete. Then you could semi-legitimately obtain the full amulet. Plus, that battle is one of the more fun/challenging in the game. Anyway, hope that helps. I, too, intensely dislike how many quests are crammed down your throat.
-
Dear fg109, you are like the Mother Theresa of modders :wub: I have been struggling all night with what should probably be a totally noobishly simple script. Makes sense given that I am a noobish simpleton when it comes to scripting bwaha Anyway, I'm trying to set the value of Timescale to 90 whenever I (and only me) am using a forge, grindstone or workbench, then to have it return to normal (default 20) when I leave it. This is just 'cause I like realism and want it to take a couple of in-game hours to make a suit of armor lol. I can get a cup of coffee or whatever in the meantime. I'd been messing around with trying to extend the Form script and the ObjectReference script, but nothing seems to actually compile. I feel like it should be really simple with an activator (the forge, etc.) and the get and set global variable, but my syntax seems to fail each time. If you're still feeling like a saint, I would be overwhelming grateful if you could point me in the right direction :)
-
Greetings friends, Massive modding newbie here, looking to better understand the CK. I'm trying to make a Smithing mod (I know there are tons, it's mainly for practice), but have been getting nowhere fast. Here is what I am trying to do: 1. Add two new perks 2. Edit and reposition "Steel" and "Advanced Armors" 3. Prohibit tempering any equipment that one does not have the perk for 4. Lower the improvement values for tempering so that each grade gives only +1 weapon and +2 armor, up to +6 and +12 max. So what's the problem? In short, numbers 3 and 4. I made all the edits I thought necessary and created my two new perks. I re-made my Smithing "constellation" and started it up in-game. And then nothing happened. My constellation was indeed changed, but my edits to Smithing tempering values were not. And my mod was loaded last in my load order. So I am wondering where I went wrong. Adding the perks was easy, and I am pretty sure I did that correctly (click in white space in perk tree --> "add perk" --> choose dummy perk --> edit --> accept changes and create new form). But my edits to the Smithing values were completely irrelevant. When I was editing this, I changed the "Modify Temper Health" field from "Multiply Value 2.00" to "Multiply Value 1.6" thinking that would approximate my desired tempering values (~40% reduction). In reality, this did nothing. So I figured that modifying that value ("Modify Temper Health") wasn't actually determining the improvement magnitude; rather, it was only affecting the "Effective Smithing Level" of my character (the "ActorValue" rather than the "BaseActorValue"). Now, this might be a handy, and I might use it to nerf one's ability to get their Smithing level higher than the first tier of Legendary (with perk), but it did not seem to affect the actual utility of tempering. So what does? I searched and could not find where the fields for the tempering grades (fine, superior, etc.) are actually defined. ARE they actually defined like this (simple as editing a field with my new values?) or is the tempering bonus the byproduct of some enormous formula that I am probably not good enough at math to comprehend? Finally, how do I prohibit the player from tempering equipment that they do not have the perk for? Do I actually have to edit this field on every single item in the game? I read in the Beth tutorial that it is possible to edit the properties (the "Temper Recipe") of an item so to only allow improvement with the requisite perk, but that seems like a tragically inefficient way to implement this. Is there a way to implement this on a more macro level, using the actual perks and Keyword checks (HasKeyword --> ArmorMaterialSteel, etc.)? I tried examining the "Arcane Smithing" perk, because that perk seems to work this way, but I came away with no real answers. Any and all help on implementing this would be immensely welcome. Alrighty, thank you guys so much!
-
@myrmaad + Aurielius Saying that something is "extreme" might be used subjectively, but it most definitely does not make it objectively true. If this person attempts to export their own subjective view of extremism to the objective realm of empiricism and fact--they are lying to you. But we can clearly see this in play with the example that myrmaad uses, that of Richard Nixon. In 1968, Nixon was viewed as conservative. He had just become buddy-buddy with the rising star Ronald Reagan (after defeating him in the primaries) and was making his spiel about America's "silent majority" that was displeased with the perceived liberal political overreach (and cultural transformation) of the Kennedy-Johnson years. He wanted to track back to the right, and he did. He was solidly "conservative" on foreign policy, but he was not an ideologue. He, of course, opened the door to China--the first President ever to do this. He was okay with talking to his enemies, of making diplomatic deals if it ended in mutual advantage. He tried to end the Vietnam war by winning it, but when that failed, he fell back and made the best with what he had. He was pragmatic. He was realistic. He also assassinated Salvador Allende. So he was tempered by an ideology (postwar American conservatism), but he was not blindly so. Fast-forward to today, and I am beyond sure that Nixon would have no place in the Republican party. Compare his (moderate, in this context) governing record with the present tenor of the Republican primary debate. Indeed, can you imagine any of the modern Republican candidates ever proposing or signing the SALT I or ABM treaties? Obama signed a nuclear armaments reduction treaty with Russia (2010) and was lambasted by the Republican party, many of the Presidential hopefuls among them, for compromising America's security. Nixon also used executive price-controls in an attempt to curb inflation; can you imagine the howls of "socialism" if Obama ever made such a move--they would be deafening. Nixon also created the EPA and OSHA and signed the Clean Air Act. Where, in this Republican moonscape of "drill, baby, drill" is there a place for the EPA? Nixon also desegregated (at least on a large scale) the public education system, instituted Affirmative Action, and went on record supporting the women's Equal Rights Amendment to the Constitution. Suffice it to say, none of these actions would be supported by the present-day Republican party. In my estimation, Nixon was a good Republican president. So what happened? The Republican party changed. Conservatism may or may not have followed suit. We are all aware of the modern positions of the Republican Party, no need to cover them again here. Compared with Nixon or, for an even greater moment of clarity, contrasted with Eisenhower, you can see very easily where the party has headed. And that has been FAR to the right. I wouldn't necessarily say that the party is swimming in "extremist" waters just quite yet, but if the party continues its present trajectory, it will be there soon enough. What is indisputable is that the party has lurched to the right. Very far to the right. One watershed moment in this transformation was Reagan. Another was W. Bush. Another is happening now (post-Obama). You can only travel so far to the right before you knock up against the border of "extreme." And when we get there, you can be sure that Republican commentators will do their best to stake that border as the new "moderate" in our political spectrum. But I would say, just remember where we have been (Nixon, Eisenhower) and you will see where we are going.
-
@Aurielius Sure, Obama is preemptively doing damage-control in the (likely) event that he loses the ruling. If the centerpiece of a future Romney Administration were on the verge of being struck down by a liberal court, I would highly suspect that he would be doing the same. Conservatives have vocally complained for years about "judicial activism" on the part of the Supremes and--they were probably right. In at least some cases, that is. However, given that the tables have now been turned in their favor (able to win contentious rulings using their 5-4 majority), it is unlikely that we will be graced with any Republican claims of activism on the part of the present court, even if it were to take place. I would parse this and say that principled conservatives =/= Republicans, in most cases; I am speaking of the Republican party apparatchniks, most of their politicians, and their talking heads. Do I believe that such a ruling in this instance would constitute judicial overreach--no. So I think that Obama is just playing at political games and formulating spin. He is trying to rile up his base in an election year, giving them "red meat" for the ballot box by raising the specter of continued negative Supreme Court rulings if Republicans are allowed to appoint even more (young) justices. I also would state that I (sadly) believe that the Supreme Court has become just another of our party organs, wearing the same jerseys as the Democrats and Republicans even when they are nominally supposed to be above the fray. On the "Big Deal" issues of the political day (decisions with concrete and impactful ramifications for the parties), I would color myself highly surprised if this did not continue to be the case. Republicans will continue to "win" on rulings when it is in their political interest, and--if this state of affairs is ever reversed--I believe that Democrats would "win" with a majority of their own. Obviously that is not healthy. Obviously that is not what the Framers desired. Yet there it is. In any case, I do not really see the Supreme Court as anything high or esteemed these days, they are all merely "team players" wearing special clothes. This, in my eyes, greatly undermines their legitimacy and authority, weakening perhaps our most important branch of government at a time when the executive (beginning probably with Nixon) has accumulated far too much power.
-
@grannywils Maybe this topic can work after all :) I 100% agree with your last sentence, that peace would be possible if Middle Eastern governments would only move out of the way. I believe that the Likud Party in Israel has no intention of ever achieving peace, that their entire political and foreign policy platform would fall apart if this ever came to pass. That would start costing them elections, robbing them of their power and posh corner offices, of their vice-grip over Israeli politics. In other words, it is politically expedient to be at permanent war (either diplomatically or militarily) with the Arab world, that perpetuating the conflict reinforces their narrative that only hard-line policies work when dealing with their neighbors, and marginalizing any sort of liberal or moderate opposition. I'd view it as similar to the Republican Party's desire for permanent war in the campaign against terrorism/rogue states. Not only is it beneficial for Republican donors (the defense establishment), it induces a state of fear in the rest of the population, making them more amenable to surrender their civil liberties and gravitate toward hard-line, militaristic solutions to any and all problems that might confront the nation. As problems and conflicts multiply, voters turn toward the "stern father" for answers, never really noticing that it was the militaristic and aggressive policies of said stern father that gave rise to (or exacerbated) these problems and conflicts to begin with. A virtuous cycle if you are a right-wing politician. So it is beneficial to forever have a Palestinian bogeyman hiding under the bed of the Israeli population. At least it is beneficial for Likud. On the other side of the fence, however, this same state of affairs is also beneficial for Hamas. Hamas, and Yasser Arafat before them, has no real interest in seeing a peaceful resolution to this situation either. For exactly the same reasons as Likud. In a peaceful Palestine, what would be left for Hamas to run on? When people are no longer interested in their paramilitary power, what does Hamas really have to offer the nation? Nothing. Or at least not anything that has ever been articulated. Hamas is the Likud Party's best friend, as the Likud Party is Hamas' best friend. Both allow the other to remain frozen in aspic in terms of their policy proscriptions, knowing that one hard-line solution will be reflected (like staring into a mirrored hallway) by their own hard-line solution, continuing down into forever. At some point, somebody needs to break this destructive co-dependence. Which hopefully would be the actual people of these countries, rising up and telling their respective governments that enough is enough. It is the project of Likud and Hamas, however, to ensure that there is too much pain on both sides for this to ever happen, that their monopolies on power will be preserved by soaking their nations in blood, irredeemably embittering each toward the other, forever. Then there will never be a solution. Permanent war. Permanent political office. The right-wing parties win at the expense of their nations. Huzzah. But I don't really know what the answer is. I don't know a realistic way of circumventing the cynicism of Likud and Hamas, to set aside years of mutual slaughter literally in spite of their own governments. If that is the case, then the right-wing project of Likud and Hamas has likely already succeeded.
-
Harbringe, you are a godsend. I watched that Brzezinksi interview with Fareed when it aired and I instantly wished that he was our Secretary of State. I'd very much admired him before, but after seeing that I was literally so happy that at least some of our prominent national figures have managed to retain a sense of intelligence and reason when it comes to foreign affairs. I am also glad to see you raise the issue of Israel's nuclear doctrine and how they have sworn, as a matter of military policy, to nuke the victor of any conventional war. Meaning that they must always win (or have somebody else win for them) lest the unthinkable happen--to somebody else. That is indeed, as you say--thuggish. Your post deserves far more commentary, but it is very late here so I will have to revisit this tomorrow.
-
Changed mind yet again, maybe this topic will work. Included: History, foreign policy, peace process, domestic politics, military strategy, etc.
-
Tracking back to the question of Iran's nuclear ambitious, does anybody have anything to say regarding my previous comments--that Iran has a (rational) right to a nuclear weapon just the same as Israel or the United States do. Also, any comments regarding their nuclear doctrine vis-a-vis a conventional war and that doctrine's implications for American foreign policy? Furthermore, why is everybody giving a free pass to Israel for its shady efforts at nuclear proliferation, the same efforts that we are presently condemning Iran for? Personally, I do not support any nation having nuclear weapons. I would favor complete global disarmament. That said, I do support a game theory approach toward nuclear weapons and deterrence and do believe that Iran is a rational actor. Also, the leader of Iran's last name is Ahmadinejad--is that really so hard to type out. Intentionally misrepresenting or mocking his name is yet another example of people implicitly denying the legitimacy of Iran's actions on the world stage. In truth, Ahmadinejad can say whatever it is that he darn well pleases--he is not the one calling the shots within Iran. He is a spokesman, a puppet figure, a ceremonial necessity, and that means that not everything that he says is official Iranian state policy. People should remember the "good cop, bad cop" routine that Nixon and Kissinger played when they were negotiating the treaty in Vietnam. The truth is, one of them (happened to be Nixon) was lying. He had no intention of using an atomic weapon on Vietnam, but Kissinger let on that if things continued to go on there... he just might. Translated to another audience, you have this same game (IMO) designed for domestic (Iranian) consumption. Ahmadinejad says foolhardy, anti-Semitic things to rouse (one segment of) the Iranian people and (hopefully) bolster (flagging) support for the regime. On the other hand, you have the people who are actually ruling the country, the Ayatollahs, that do not wish to perish in a nuclear war. Also, please do not let us forget that it was the SHAH OF IRAN, an American client, that first authorized Iran's nuclear program. This WAS NOT the brainchild of "genocidal" Ayatollahs. Furthermore, the nuclear program is a source of national pride and is widely supported by the Iranian population. This aspect of the pursuit of nuclear weapons seems to be lost or inconsequential on many a commentator here. Why did France desire a nuclear weapon, even when they knew that they were covered by the American nuclear umbrella? National pride (anger regarding their failure at the Suez Canal). Why did Britain? Same answer. These states desired the prestige that a nuclear weapon conferred, they knew that they would have to be taken seriously again on the world stage even as their colonial empires crumbled and their conventional military forces appeared as toys next to the might of the Soviet Union and United States. And yes, perhaps they feared abandonment by the United States as well, though in 1945 that outcome would have seemed... unlikely. The nuclear program has been used in a similar way in India and Pakistan, so much so that Adbul Qadeer Khan, the father of the Pakistani atomic bomb, is revered as a national hero, even after his shady proliferation network was discovered. I would speculate that the same would have been true for Brazil when they were briefly developing an atomic weapon (or because they actually believed that Uruguay or Belize were existential threats *rolls eyes*). If we knew anything about the insides of North Korea, I would speculate that their nuclear program is a source of much pride and programming as well. Truth is, nuclear programs can and have been used by unpopular regimes as a source of national pride, bolstering the regime. I would say that the Iranian nuclear program is influenced both by the very real and very existential threat (posed by us, the United States) to their nation (well, regime), as well as for propaganda (national pride) purposes desired by the regime. Merely saying "ZOMG dinnerjacket is crayzeeeee" is a valid opinion. But it is also not very nuanced. In 1946 everybody thought that the Soviet Union was "crayzeeeee" as well, until--you know--it turned out that they weren't. Just as Ahmadinejad has demonized the United states and Israel, we have demonized him and Iran right back. Demonization is just a shorthand way of saying "I don't really want to think about this anymore" and arrive at an easy and comfortable answer. Literally crazy (irrational) people by and large do not end up in possession of entire states, let alone manage to hang onto them for 25+ years. Iran wants nuclear weapons because it wants Persia to take its rightful place on the world stage yet again, after literally centuries of colonial manipulation (Russia, Britain, USA) and conquest. They also want it because they see American guns trained on them the same way they were trained on Iraq before we took down Saddam. Iran having a nuclear weapon will mean that we cannot invade them any longer (well actually, we probably could because they would not want to invite a nuclear counter-attack), it would mean that we could no longer hold an axe over their head and attempt to push them around. It would mean they would have a deterrent for themselves and for their regime. That would mean that regime change could only happen from within. This was likely to be the case anyway. In the short term it curbs our influence over them, but in the long term they will succumb to the quintessential nuclear paradox. That they are the most powerful weapons that will never be used.
-
Agreed regarding the Mufti. I would now accept the statement that had Germany won the war, he would have eagerly collaborated with Hitler to solve his own "Jewish Problem" using the same methods. But, that didn't happen. France, Poland, Austria, Italy, Czechoslovakia, etc. did however, collaborate with the Nazis and send their Jewish populations (in varying degrees) to death camps. The Mufti probably would have too, but "probably would have" isn't the same thing as "did." It does, I will relent, weaken my argument, however. In any case, who said anything the Balfour Declaration being before the Second World War? Certainly I did not. I only mentioned it as evidence that Zionists were well-connected within European powers in ways that Arabs were not, signifying the disadvantage that the Arabs were at later when events finally came to a head after the war. Additionally, "their lands" means the people actually living there at the time (i.e. primarily Arabs), you know, the ones actually occupying the lands. Again, Israel was (in 1947) Jewish land in the same way that all of the United States is presently Native American land. If somebody came to evict the residents of Manhattan in favor of the Lenape Indians (its original inhabitants), we would reject their claim and say that the land belonged to modern American New Yorkers--because that is how things exist now--and not to the tribe. Nearly every ethnicity on Earth can make revanchist claims against its neighbors about who was there first way back in the misty mire of prehistory. None of it really matters, however, unless they have the military or political muscle to do something about it in the present. Israel could have been placed anywhere on the map to be perfectly frank. Wasn't Theodore Hertzl looking around somewhere in Africa before the Balfour Declaration ever came down? There were also Sephardic Jews scattered around the rest of the Middle East (and Ethiopia). I will contend that it was one of the last gasps of imperialism that saw the state carved out at the Arabs' expense. Even if the British were consumed were fantasies of Lawrence of Arabia or the nobility of the Arab people or whatever... it is certainly easier to take non-Europeans' lands than it is to take those of Europeans. Lots of history doing that, lots of experience. At the time, it was practically a European sport, or, I should say--a game.