Naja, wenn das Wetter wechselt, und das müßte man per "getcurrentweatherpercent" rausfinden können, ob es das gerade tut (wenn der Wert 1 beträgt, ist das aktuelle Wetter komplett geladen; bei 0 fängt gerade ein neues an zu laden, und irgendwas dazwischen bedeutet, daß der Übergang zu soundsoviel Prozent vollzogen wurde), dann passiert sowas halt: die Himmelstextur verschwindet nach einem Ladevorgang und erscheint wieder, sobald das Wetter komplett geladen wurde, und die Farben nehmen eine Mischung zwischen dem Ausgangs- und dem Zielwetterthema an. Wenn es allerdings bei jedem Dungeon-Verlassen, jeder Schnellreise usw. geschieht, dann ist das ein ganz sicheres Anzeichen dafür, daß die Wetterlösung ohne Skript, sondern nur per direkter "Climate"-Zuweisung läuft und dann sorgt jedes Neuladen der Außenregionen für einen Wetterwechsel - das ist der Hauptgrund, warum meine Wetterlösung per Skript arbeitet ! Wenn ich jetzt aber schon mal hier bin, soll auch mein Spawnskript kommen, das häng ich an dieses Post an.
Code:
scn EMODSpawnScript
float TimePassedVar
float RandomHelpVar
short zufall
short zufallextra
short zufallx
short dieroll
short idice
short xdice
short edice
ref myself
ref TempRef
float heightposition
short DoOnce
begin OnLoad
if DoOnce == 0
set heightposition to getpos z
set heightposition to (heightposition + 50)
setpos z heightposition
set DoOnce to 1
endif
if GameDaysPassed > TimePassedVar
set zufall to GetRandomPercent
if zufall < 97 ;remember to re-enable this option - set to 97 because 99 made encounters way too rare
;if zufall < 1 ;testing option!!!
;do nothing
else
set zufallextra to GetRandomPercent
;roll random number
set iDice to (CaravanApparelBasic0 * 0.01 ) * GetRandomPercent
set iDice to (iDice + 1)
set xDice to getrandompercent
if xdice < 13
set iDice to (iDice * 0.2)
elseif xdice < 25
set iDice to (iDice * 0.3)
elseif xdice < 36
set iDice to (iDice * 0.4)
elseif xdice < 46
set iDice to (iDice * 0.5)
elseif xdice < 55
set iDice to (iDice * 0.6)
elseif xdice < 63
set iDice to (iDice * 0.7)
elseif xdice < 70
set iDice to (iDice * 0.8)
elseif xdice < 76
set iDice to (iDice * 0.9)
elseif xdice < 81
set iDice to iDice
elseif xdice < 90
set iDice to 0
elseif xdice < 95
set iDice to CaravanApparelBasic0
elseif xdice < 97
set iDice to (iDice * 2)
else
set iDice to (iDice + 1)
endif
set xDice to GetRandomPercent
if xDice < 20
set iDice to (1 + iDice)
elseif xDice < 70
set iDice to (iDice - 1)
elseif xDice < 75
set iDice to (iDice - 2)
elseif xDice < 76
set iDice to (iDice - 3)
endif
if iDice < 1
set iDice to 1
endif
if zufallextra < 35
;if zufallextra < 99 ;testing option!!!
set zufallx to GetRandomPercent
if zufallx < 75 ;repeatable
set dieRoll to GetRandomPercent
if dieRoll < 2
placeatme ExtraSpawn01LvlAnt iDice
placeatme ExtraSpawn01Scorpio
elseif dieRoll < 5
placeatme ExtraSpawn04LvlRoach iDice
elseif dieRoll < 7
placeatme ExtraSpawn06Doc
elseif dieRoll < 10
placeatme ExtraSpawn07Dog iDice
elseif dieRoll < 12
set eDice to GetRandomPercent
if eDice < 80
placeatme MineFragProjectile iDice
elseif eDice < 82
placeatme MinePulseProjectile iDice
elseif eDice < 83
placeatme MineFireProjectile iDice
elseif eDice < 84
placeatme MineCryoProjectile iDice
elseif eDice < 85
placeatme MineBottlecapProjectile iDice
else
placeatme MinePlasmaProjectile iDice
endif
elseif dieRoll < 14
placeatme ExtraSpawn21Junkie
elseif dieRoll < 16
if GetStage MS16 >= 200 && FFERepeatA.enc26done == 0
if MS16.Finish == 4 || MS16.Finish == 5
set myself to GetSelf
if FreddieGomezREF.getDead == 0
FreddieGomezREF.enable
FreddieGomezREF.moveto myself
FreddieGomezREF.kill
set FFERepeatA.enc26freddie to 1
elseif PepperGomezREF.getDead == 0
PepperGomezREF.enable
PepperGomezREF.moveto myself
PepperGomezREF.kill
set FFERepeatA.enc26pepper to 1
elseif Vault101Security04REF.getDead == 0
Vault101Security04REF.enable
Vault101Security04REF.moveto myself
Vault101Security04REF.kill
set FFERepeatA.enc26gomez to 1
set FFERepeatA.enc26done to 1
endif
endif
endif
elseif dieRoll < 18
if MegatonDestroyed == 1
placeatme ExtraSpawn27Regulator iDice
elseif MegatonDestroyed == -1
placeatme ExtraSpawn27Talon iDice
endif
elseif dieRoll < 20
set iDice to (iDice * 2)
placeatme ExtraSpawn28LvlRadscorpion iDice
elseif dieRoll < 22
if getStage MQ05 >= 80
placeatme ExtraSpawn29LvlEnclaveCompanion iDice
endif
elseif dieRoll < 24
set iDice to (iDice * 1.5)
placeatme ExtraSpawn30LvlFeralGhoul iDice
elseif dieRoll < 26
placeatme ExtraSpawn31LvlMirelurk iDice
elseif dieRoll < 28
placeatme ExtraSpawn32LvlSuperMutantAll iDice
elseif dieRoll < 31
placeatme ExtraSpawn33LvlWastelandAll iDice
elseif dieRoll < 34
placeatme ExtraSpawn34LvlBloap iDice
elseif dieRoll < 37
placeatme ExtraSpawn35LvlDog iDice
elseif dieRoll < 40
placeatme ExtraSpawn36LvlMolerat iDice
elseif dieRoll < 42
set eDice to GetRandomPercent
if eDice <= 14
placeatme LvlFeralGhoulAimbotPatrolMMM iDice
elseif eDice <= 28
placeatme LvlMirelurkAimbotPatrolMMM iDice
elseif eDice <= 42
placeatme LvlRobotAimbotPatrolMMM iDice
elseif eDice <= 57
placeatme LvlSupermutantAimbotPatrolMMM iDice
elseif eDice <= 71
placeatme LvlWastelandAllAimbotPatrolMMM iDice
elseif eDice <= 85
placeatme LvlRaiderAimbotPatrolMMM iDice
else
placeatme LvlTalonCompanyAimbotPatrolMMM iDice
endif
elseif dieRoll < 44
set eDice to GetRandomPercent
if eDice < 90
placeatme ExtraSpawn39NestGuard
else
placeatme ExtraSpawn39NestGuard iDice
endif
elseif dieRoll < 46
placeatme ExtraSpawn51Outcast iDice
elseif dieRoll < 48
placeatme ExtraSpawn52LvlRaider iDice
placeatme ExtraSpawn52Outcast iDice
elseif dieRoll < 50
set myself to GetSelf
if FFER54NPC1REF.GetDead == 0
FFER54NPC1REF.moveto myself
endif
if FFER54Robot1Ref.GetDead == 0
FFER54Robot1Ref.moveto myself
endif
if FFER54Robot2Ref.GetDead == 0
FFER54Robot2Ref.moveto myself
endif
if RL3REF.GetDead == 0 && RL3REF.HasBeenHired == 0
RL3REF.moveto myself
endif
elseif dieRoll < 52
placeatme ExtraSpawn64LvlTalon iDice
elseif dieRoll < 54
if getStage MQ05 >= 80
placeatme ExtraSpawn65LvlEnclave iDice
placeatme ExtraSpawn65EnclaveCompanion
endif
elseif dieRoll < 56
set myself to GetSelf
if FFER66UncleLeoREF.getDead == 0
FFER66UncleLeoREF.moveto myself
set FFER66UncleLeoREF.visits to FFER66UncleLeoREF.visits + 1
endif
elseif dieRoll < 58
if getStage MQ05 >= 80
placeatme ExtraSpawn65LvlEnclave iDice
placeatme ExtraSpawn65EnclaveCompanion
placeatme ExtraSpawn52Outcast iDice
endif
elseif dieRoll < 60
placeatme ExtraSpawn68LvlWastelander
placeatme ExtraSpawn68SuperMutant
elseif dieRoll < 62
if getStage MQ05 >= 80
placeatme ExtraSpawn72LvlEnclave iDice
placeatme ExtraSpawn72LvlTalon iDice
endif
elseif dieRoll < 64
placeatme ExtraSpawn74FireAnt iDice
elseif dieRoll < 66
placeatme ExtraSpawn74LvlTalon iDice
elseif dieRoll < 68
placeatme ExtraSpawn78Brahmin iDice
elseif dieRoll < 70
placeatme ExtraSpawn80OutcastRobot iDice
placeatme ExtraSpawn80Outcast iDice
elseif dieRoll < 72
placeatme ExtraSpawn81RobotArmy iDice
elseif dieRoll < 74
placeatme ExtraSpawn82RobotOutcast iDice
elseif dieRoll < 76
placeatme ExtraSpawn83RobotTalon iDice
placeatme ExtraSpawn83LvlTalon iDice
elseif dieRoll < 78
placeatme ExtraSpawn84LvlRaider iDice
placeatme ExtraSpawn84LvlRobotRaider iDice
placeatme ExtraSpawn84LvlRobotRaider iDice
elseif dieRoll < 80
if enclavemode == 1
set iDice to (iDice * 1.5)
placeatme ExtraSpawn85LvlBOS iDice
endif
elseif dieRoll < 82
placeatme ExtraSpawn86LvlChinese iDice
elseif dieRoll < 84
if player.isininterior == 0
placeatme ExtraSpawn87Behemoth
endif
set iDice to (iDice * 2)
placeatme ExtraSpawn87Supermutant iDice
elseif dieRoll < 86
set iDice to (iDice * 2)
placeatme ExtraSpawn88LvlRaider iDice
elseif dieRoll < 88
set eDice to GetRandomPercent
if eDice <= 11
placeatme LvlWastelandAllSandboxMMM iDice
elseif eDice <= 22
placeatme LvlRobotSandboxMMM iDice
elseif eDice <= 33
placeatme LvlSupermutantSandboxMMM iDice
elseif eDice <= 44
placeatme LvlMirelurkSandboxMMM iDice
elseif eDice <= 55
placeatme LvlFeralGhoulSandboxMMM iDice
elseif eDice <= 66
placeatme LvlTalonCompanyRNDSandboxMMM iDice
elseif eDice <= 77
placeatme LvlRaiderRandomSandboxMMM iDice
elseif eDice <= 88
if getstage MQ05 >= 80
placeatme LvlEnclaveSandboxMMM iDice
else
placeatme LvlRaiderRandomSandboxMMM iDice
endif
else
if getstage MQ05 >= 80
placeatme LvlEnclaveCompanionSandboxMMM iDice
else
placeatme LvlRobotSandboxMMM iDice
endif
endif
elseif dieRoll < 90
set eDice to GetRandomPercent
if eDice < 80
placeatme ExtraSpawn90NestSpawner
else
placeatme ExtraSpawn90NestSpawner iDice
endif
elseif dieRoll < 92
set eDice to GetRandomPercent
if eDice < 80
placeatme ExtraSpawn91Spawner
else
placeatme ExtraSpawn91Spawner iDice
endif
elseif dieRoll < 94
placeatme ExtraSpawn47RR
elseif dieRoll < 96
placeatme ExtraSpawn48ThalmorBoss
placeatme ExtraSpawn48ThalmorGoon 3
elseif dieRoll < 98
placeatme NestSpecialBaddie
else
;empty
endif
else ;unique
set dieRoll to GetRandomPercent
if dieRoll < 2
if FFEUniqueA.enc1Done == 0
set myself to GetSelf
FFEU01Marker1.moveto myself
FFEU01NPC1Ref.moveto myself
placeatme FloorSitMarker
set FFEUniqueA.enc1done to 1
endif
elseif dieRoll < 4
placeatme ExtraSpawn105Radscorpion
elseif dieRoll < 6
if MegatonDestroyed == 1
placeatme ExtraSpawn114Hitman
elseif MegatonDestroyed == -1
placeatme ExtraSpawn115Hitman
endif
elseif dieRoll < 8
if DialogueUnderworld.HannibalTravenDead == 1 && FFEUniqueA.enc22Done == 0
set myself to GetSelf
UEPolusMarker.moveto myself
UEPolusREF.moveto myself
UECaranjaREF.moveto myself
set FFEUniqueA.enc22Done to 1
endif
elseif dieRoll < 10
if DialogueParadiseFalls.RelmynaVerenimDead == 1 && FFEUniqueA.enc23Done == 0
set myself to GetSelf
SEMankarCamoranREF.moveto myself
SEMankarCamoranThroneREF.moveto myself
placeatme SlaverEnemyMDPatrol 5
placeatme LvlRegulatorGun 15
set FFEUniqueA.enc23Done to 1
endif
elseif dieRoll < 12
placeatme ExtraSpawn158Brahmin iDice
elseif dieRoll < 14
placeatme ExtraSpawn160Sniper
elseif dieRoll < 16
placeatme ExtraSpawn161Hunter1
elseif dieRoll < 18
placeatme ExtraSpawn162TenpennyRaider
elseif dieRoll < 20
;placeatme ExtraSpawn163TenpennyWizard - taken out because of bugs
elseif dieRoll < 22
placeatme ExtraSpawn164MadRCSecurity
elseif dieRoll < 24
placeatme ExtraSpawn165LvlGhoulRaider iDice
elseif dieRoll < 26
placeatme ExtraSpawn166LvlBOS iDice
placeatme ExtraSpawn166LvlRobotBOS iDice
placeatme ExtraSpawn166LvlRobotBOS iDice
elseif dieRoll < 28
placeatme ExtraSpawn167OutcastPatrol iDice
elseif dieRoll < 30
if getstage MQ05 >= 80
placeatme ExtraSpawn168EnclavePatrol iDice
endif
elseif dieRoll < 32
placeatme ExtraSpawn171LvlWanamingo iDice
elseif dieRoll < 34
placeatme ExtraSpawn172LvlFrostAnt iDice
elseif dieRoll < 36
placeatme ExtraSpawn173LvlInvisoFloater iDice
elseif dieRoll < 38
set eDice to GetRandomPercent
if eDice < 95
placeatme ExtraSpawn174LvlInvisoDeathclaw
else
placeatme ExtraSpawn174LvlInvisoDeathclaw iDice
endif
elseif dieRoll < 40
placeatme ExtraSpawn175LvlRaiderWizard
placeatme ExtraSpawn175LvlRaiderInviso iDice
elseif dieRoll < 42
set iDice to (iDice * 2)
placeatme ExtraSpawn174LvlSupermutantAll
elseif dieRoll < 44
placeatme ExtraSpawn179LvlAdventurer iDice
elseif dieRoll < 46
placeatme ExtraSpawn180AggroScav
elseif dieRoll < 48
placeatme ExtraSpawn181LvlDremora iDice
elseif dieRoll < 50
set iDice to (iDice * 5)
placeatme encountertb iDice
elseif dieRoll < 52
placeatme ExtraSpawn185LvlScrap iDice
elseif dieRoll < 54
if FFEUniqueA.enc4done == 0
set myself to GetSelf
FFEU04NPC1Ref.moveto myself
placeatme FakeForceBall1000
set tempRef to placeLeveledActorAtMe FFEU04DeathClaw
set eDice to tempRef.getav health
set eDice to eDice * .8
tempRef.damageav health eDice
tempRef.damageav LeftAttackCondition 50
tempRef.damageav RightAttackCondition 30
tempRef.damageav RightMobilityCondition 100
tempRef.damageav LeftMobilityCondition 65
tempRef.damageav PerceptionCondition 80
tempRef.damageav EnduranceCondition 40
set FFEUniqueA.enc4done to 1
endif
elseif dieRoll < 55
if FFEUniqueA.enc8done == 0 && player.isininterior == 0
set myself to GetSelf
FFEU08Marker1.moveto myself 0 0 2500 ; where explosion happens
FFEU08Marker2.moveto myself 0 0 2520 ; where ammo/blaster are placed
FFEU08Marker3.moveto myself 0 0 2520 ; where ammo/blaster are placed
FFEU08Marker4.moveto myself 0 0 2520 ; where ammo/blaster are placed
FFEU08Marker5.moveto myself 0 0 2520 ; where ammo/blaster are placed
FFEU08FallingObjectREF.moveto myself 0 0 2500
set FFEUniqueA.enc8done to 1
endif
elseif dieRoll < 57
if DialogueParadiseFalls.RelmynaVerenimDead == 1
placeatme ExtraSpawnUDawnBastard iDice
set eDice to GetRandomPercent
if eDice < 10
set iDice to (iDice * 2)
endif
if eDice < 50
placeatme ExtraSpawnUDawnBastard iDice
endif
endif
elseif dieRoll < 59
placeatme ExtraSpawn125LvlBOS iDice
placeatme ExtraSpawn125LvlOutcast iDice
elseif dieRoll < 60
if player.isininterior == 0
placeatme ExtraSpawn126Behemoth
endif
elseif dieRoll < 62
if getstagedone MS12 200 == 1
placeatme ExtraSpawn14Ghoul iDice
set tempref to placeatme ExtraSpawn14Ghoul
if MS12.allGhoulsDead == 0
tempref.additem MS12RandomQuestNoteA 1
elseif MS12.allGhoulsDead == 1
tempref.additem MS12RandomQuestNoteB 1
endif
endif
elseif dieRoll < 63
placeatme ExtraSpawn27LvlCazadore
elseif dieRoll < 65
if FFEUniqueA.enc31Done == 0
set myself to GetSelf
VictoriaCompanionREF.enable
VictoriaCompanionREF.moveto myself
set FFEUniqueA.enc31done to 1
endif
elseif dieRoll < 67
if FFEUniqueA.enc32Done == 0
set myself to GetSelf
KetzerREF.enable
KetzerREF.moveto myself
set FFEUniqueA.enc32done to 1
endif
elseif dieRoll < 69
if FFEUniqueA.enc36Done == 0
set myself to GetSelf
FFEU36DogCompanionREF.enable
FFEU36DogCompanionREF.moveto myself
myself.placeatme FFEU36NPC1
myself.placeatme FFEU36Raider1
myself.placeatme FFEU36Raider2
myself.placeatme FFEU36Raider3
myself.placeatme FFEU36Raider4
myself.placeatme FFEU36Raider5
myself.placeatme LvlRaiderGun
set FFEUniqueA.enc36done to 1
endif
else
;empty
endif
endif
else
set zufallx to GetRandomPercent
if zufallx < 5
placeatme EMODspawnzorAnt iDice
elseif zufallx < 7
placeatme EMODspawnzorAntAcid iDice
elseif zufallx < 9
placeatme EMODspawnzorAntRAD iDice
elseif zufallx < 11
placeatme EMODspawnzorAntSonic iDice
elseif zufallx < 16
placeatme EMODspawnzorBloapfly iDice
elseif zufallx < 20
placeatme EMODspawnzorBot iDice
elseif zufallx < 25
placeatme EMODspawnzorBrahmin iDice
elseif zufallx < 28
placeatme EMODspawnzorCentaur iDice
elseif zufallx < 30
placeatme EMODspawnzorDeathclaw iDice
elseif zufallx < 35
placeatme EMODspawnzorDog iDice
elseif zufallx < 40
placeatme EMODspawnzorGhoul iDice
elseif zufallx < 44
placeatme EMODspawnzorMirelurk iDice
elseif zufallx < 45
placeatme ChaseDeathclawList iDice
elseif zufallx < 46
placeatme ChaseYaoList iDice
elseif zufallx < 49
placeatme EMODspawnzorMolerat iDice
elseif zufallx < 53
placeatme EMODspawnzorRandom iDice
elseif zufallx < 58
placeatme EMODspawnzorRoach iDice
elseif zufallx < 61
placeatme EMODspawnzorScorpio iDice
elseif zufallx < 66
placeatme EMODspawnzorSuperMutant iDice
elseif zufallx < 69
placeatme EMODspawnzorYao iDice
elseif zufallx < 72
placeatme EMODspawnzorBOS iDice
elseif zufallx < 76
placeatme EMODspawnzorChineseSoldier iDice
elseif zufallx < 77
placeatme EMODspawnzorDoc
elseif zufallx < 80
set eDice to GetRandomPercent
if eDice < 97
placeatme ChaseBaddieList iDice
else
placeatme NestChasingBaddie
endif
elseif zufallx < 82
set eDice to GetRandomPercent
if eDice < 95
placeatme EMODspawnzorHunter
else
placeatme EMODspawnzorHunter iDice
endif
elseif zufallx < 84
placeatme EMODspawnzorOutcast iDice
elseif zufallx < 86
placeatme EMODspawnzorPhantom iDice
elseif zufallx < 91
placeatme EMODspawnzorRaider iDice
elseif zufallx < 92
placeatme EMODspawnzorSpinner
elseif zufallx < 97
placeatme EMODspawnzorTalon iDice
else
set eDice to GetRandomPercent
if eDice < 95
placeatme EMODspawnzorWastelander
else
placeatme EMODspawnzorWastelander iDice
endif
endif
endif
endif
set RandomHelpVar to GetRandomPercent
set RandomHelpVar to (RandomHelpVar * 0.16)
set timedebugvar0 to RandomHelpVar
set RandomHelpVar to (RandomHelpVar * 0.1)
set timedebugvar to RandomHelpVar
set TimePassedVar to (RandomHelpVar + GameDaysPassed)
set timedebugvar2 to TimePassedVar
endif
end
Vielleicht liefert es ja Inspirationen für was auch immer.