This commit is contained in:
2024-09-21 14:38:29 +08:00
parent 01200b9020
commit 2ac2b23047
15 changed files with 1131 additions and 30 deletions

View File

@@ -1,4 +1,4 @@
#歼星武器
#歼星武器-试射武器
weapon_component_template = {
key = "RG_PLANET_KILLER_SP"
size = planet_killer
@@ -51,6 +51,59 @@ weapon_component_template = {
}
}
#歼星武器-风暴浪潮
weapon_component_template = {
key = "RG_PLANET_KILLER_NANO_SP"
size = planet_killer
type = planet_killer
icon = GFX_ship_part_divine_enforcer
icon_frame = 1
projectile_gfx = "gatebuilder_planet_weapon_ex"
planet_destruction_gfx = "neutron_planet_gfx"
total_fire_time = 60 #开火时间
firing_arc = 25
resources = {
category = ship_components
cost = {
alloys = 2000
nanites = 50
}
}
power = -1000
damage = {
min = 35
max = 350
} #伤害
windup = {
min = 32
max = 64
} #冷却
size_damage_factor = 10
hull_damage = 10 #船体伤害
shield_damage = 10 #护盾伤害
armor_damage = 10 #装甲伤害
shield_penetration = 10 #护盾穿透
armor_penetration = 10 #装甲穿透
tracking = 1 #追踪
range = 800 #范围
accuracy = 1 #命中
tags = {
weapon_type_rg_main
weapon_type_energy
}
size_restriction = {
RG_gray_juggernaut
RG_graygoo_capitalship
RG_graygoo_mothership
}
component_set = "RG_PLANET_KILLER"
prerequisites = { "tech_object_gray_7" }
ship_limit = 1
ai_weight = {
weight = 0
}
}
# 重组仪
utility_component_template = {
key = "RG_revive_component"

View File

@@ -0,0 +1,110 @@
### turn off the lights
decision_rg_server_shut_down = {
owned_planets_only = yes
sound = event_administrative_work
icon = decision_glitchy_matrix
enactment_time = 30
resources = {
category = decisions
cost = {
unity = 200
}
}
potential = {
exists = owner
owner = {
has_tradition = tr_virtuality_finish
}
}
allow = {
is_capital = no
}
effect = {
destroy_colony = yes
}
ai_weight = {
weight = 0
}
}
### Nanotech Slushify Planet
decision_rg_nanotech_swarm_consume_world = {
icon = decision_tidal_lock_planet
sound = event_structural_collapse
#enactment_time = 360
resources = {
category = decisions
}
owned_planets_only = yes
potential = {
exists = owner
owner = {
has_tradition = tr_rg_nanotech_3
}
can_have_habitable_deposits = yes
is_capital = no
NOT = {
has_planet_flag = being_devoured
}
NOT = { has_designation = col_nanotech_world }
}
effect = {
custom_tooltip = decision_nanotech_swarm_consume_world_effect_desc
set_timed_planet_flag = {
days = 360
flag = recently_eaten_planet
}
hidden_effect = {
set_planet_flag = colony_event
set_planet_flag = being_devoured
add_modifier = {
modifier = being_devoured_modifier_nanotech
days = -1
}
export_trigger_value_to_variable = {
trigger = planet_size
variable = num_districts_terravore
}
export_trigger_value_to_variable = {
trigger = count_deposits
parameters = {
type = d_nanotech_devastation
}
variable = num_lithoid_blockers
}
if = {
limit = {
is_variable_set = num_lithoid_blockers
}
subtract_variable = {
which = num_districts_terravore
value = num_lithoid_blockers
}
}
}
owner = {
start_situation = {
type = situation_rg_nanotech_consume_planet
target = root
}
}
}
ai_weight = {
weight = 5
# don't wreck worlds you want to keep
modifier = {
factor = 0
is_lithoid_devouring_swarm_consumption_world = no
}
}
}

View File

@@ -261,4 +261,14 @@ on_district_demolished = {
rg_planet.2026 # Virtual Machine pop creation
rg_planet.2031 # Virtual Machine pop destruction
}
}
# A pop has finished purging
# This = Planet scope
# From = Country
# FromFrom = Pop
on_pop_purged = {
events = {
rg_event.24 # Necrophage Purge
}
}

View File

@@ -48,6 +48,19 @@ on_destroy_planet_with_RG_PLANET_KILLER_SP_queued = {
on_destroy_planet_with_RG_PLANET_KILLER_SP_unqueued = {
}
on_destroy_planet_with_RG_PLANET_KILLER_NANO_SP = {
events = {
RG_planet_killer.4
# rg_story.6
}
}
on_destroy_planet_with_RG_PLANET_KILLER_NANO_SP_queued = {
}
on_destroy_planet_with_RG_PLANET_KILLER_NANO_SP_unqueued = {
}
# World Cracker
on_destroy_planet_with_RG_PLANET_KILLER_CRACKER = {
events = {

View File

@@ -0,0 +1,31 @@
# pc_nanotech = {
# entity = "gray_goo_planet"
# entity_scale = @planet_standard_scale
# icon = GFX_planet_type_toxic
#
# atmosphere_color = hsv { 0.19 0.45 0.9 } #DONE
# atmosphere_intensity = 0.1
# atmosphere_width = 1.2
#
# city_color_lut = "gfx/portraits/misc/colorcorrection_neutral.dds"
#
# min_distance_from_sun = @habitable_min_distance
# max_distance_from_sun = @habitable_max_distance
#
# spawn_odds = 0
#
# extra_orbit_size = 0
# extra_planet_count = 0
#
# chance_of_ring = 0.2
#
# planet_size = { min = 12 max = 25 }
# moon_size = { min = 6 max = 10 }
#
# can_be_invaded = yes
# can_have_no_pop_colony = no
# colonizable = yes
# district_set = machine_world
# starting_planet = no
# show_city = no
# }

View File

@@ -7,7 +7,7 @@ rg_tempest_invocator = {
category = relics
# Activation cost
cost = {
energy = 0
nanties = 5000
}
}

View File

@@ -1909,6 +1909,403 @@ RG_destroy_planet_effect = {
}
}
RG_destroy_planet_effect_sp = {
#Dismantle observation post
if = {
limit = {
has_observation_outpost = yes
}
observation_outpost_owner = {
country_event = {
id = planet_destruction.1000
days = 1
}
}
}
# Contingency Machine World
if = {
limit = {
is_planet_class = pc_ai
NOT = {
has_planet_flag = machine_lair
}
}
set_planet_flag = destroyed_by_colossus
set_planet_flag = planet_cracked
planet_event = {
id = crisis.2040
}
}
# Contingency Final Machine World
if = {
limit = {
is_planet_class = pc_ai
has_planet_flag = machine_lair
}
set_planet_flag = destroyed_by_colossus
set_planet_flag = planet_cracked
from.owner = {
save_event_target_as = final_machine_world_destroyer
}
stop_crisis_sound = yes
planet_event = {
id = crisis.2046
}
}
# Swarm Situation Log counter
if = {
limit = {
exists = owner
owner = {
is_country_type = swarm
}
}
every_country = {
limit = {
has_event_chain = "prethoryn_scourge_chain"
}
add_event_chain_counter = {
event_chain = "prethoryn_scourge_chain"
counter = "infested_worlds"
amount = -1
}
add_event_chain_counter = {
event_chain = "prethoryn_scourge_chain"
counter = "infested_worlds_cleansed"
amount = 1
}
}
}
if = {
limit = {
OR = {
is_active_resolution = "resolution_rulesofwar_reverence_for_life"
is_active_resolution = "resolution_rulesofwar_independent_tribunals"
is_active_resolution = "resolution_rulesofwar_last_resort_doctrine"
is_active_resolution = "resolution_rulesofwar_demobilization_initiative"
}
}
from.owner = {
set_timed_country_flag = {
flag = resolution_breached_fired_cracker
days = 3600
}
}
}
# Exterminatus Achievement
if = {
limit = {
is_capital = yes
}
from.owner = {
set_country_flag = exterminatus
}
}
if = {
limit = {
exists = owner
owner = {
NOT = {
is_same_value = from.owner
}
OR = {
is_country_type = default
is_country_type = fallen_empire
is_country_type = awakened_fallen_empire
}
}
}
# Generate threat
if = {
limit = {
is_colony = yes
}
add_threat = {
who = from.owner
amount = 3
}
# modifier for allies + those upset by genocide
every_country = {
limit = {
NOR = {
is_same_value = from.owner
is_same_value = root.owner
AND = {
has_federation = yes
is_in_federation_with = from.owner
}
}
OR = {
has_communications = from.owner
has_communications = root.owner
}
OR = {
AND = {
has_federation = yes
is_in_federation_with = root.owner
}
has_ai_personality = awakened_fallen_empire_xenophile
AND = {
is_country_type = default
OR = {
is_egalitarian = yes
is_xenophile = yes
}
}
}
}
if = {
limit = {
root = {
is_colony = no
}
}
add_opinion_modifier = {
modifier = opinion_cracked_an_uninhabited_world
who = from.owner
}
}
else = {
add_opinion_modifier = {
modifier = opinion_cracked_a_world
who = from.owner
}
}
}
}
else = {
add_threat = {
who = from.owner
amount = 1
}
}
# modifiers for victim
owner = {
if = {
limit = {
root = {
is_colony = no
}
}
add_opinion_modifier = {
modifier = opinion_cracked_my_uninhabited_world
who = from.owner
}
}
else = {
add_opinion_modifier = {
modifier = opinion_cracked_my_world
who = from.owner
}
}
if = {
limit = {
NOT = {
has_ethic = ethic_gestalt_consciousness
}
}
add_modifier = {
modifier = colossus_victim
days = 10800 # 30 years
}
}
}
if = {
limit = {
exists = owner
owner = {
is_country_type = primitive
}
}
# modifier for allies + those upset by genocide
every_country = {
limit = {
NOT = {
is_same_value = from.owner
}
OR = {
has_communications = from.owner
has_communications = root.owner
}
OR = {
has_ai_personality = awakened_fallen_empire_xenophile
AND = {
is_country_type = default
NOR = {
is_xenophobe = yes
is_homicidal = yes
is_xenophile = yes
}
}
}
}
add_opinion_modifier = {
modifier = opinion_cracked_a_primitive_world
who = from.owner
}
}
every_country = {
limit = {
NOT = {
is_same_value = from.owner
}
OR = {
has_communications = from.owner
has_communications = root.owner
}
OR = {
has_ai_personality = awakened_fallen_empire_xenophile
AND = {
is_country_type = default
is_xenophile = yes
}
}
}
add_opinion_modifier = {
modifier = opinion_cracked_a_primitive_world_phile
who = from.owner
}
}
}
}
# Add war exhaustion to planet owner
if = {
limit = {
exists = owner
}
owner = {
if = {
limit = {
#isn't the case when the crisis bombards planets, for instance
is_at_war_with = from.fleet.owner
}
add_static_war_exhaustion = {
attacker = from.fleet.owner
location = root
value_for_planet_destruction = 1
}
}
}
}
if = {
limit = {
is_planet_class = pc_habitat
} # uncolonized
spawn_habitat_cracker_effect = yes
change_pc = pc_nanotech
}
if = {
limit = {
is_colony = yes
}
if = {
limit = {
exists = owner
owner = {
is_same_value = event_target:gray_owner
}
}
# already owned
}
else = {
set_owner = event_target:gray_owner
}
every_owned_pop = {
modify_species = {
species = event_target:gray_owner.owner_species
add_trait = trait_cybernetic
add_traits_at_start_of_list = yes
change_scoped_species = yes
}
}
every_owned_pop = {
limit = {
has_modifier = pop_recently_conquered
}
remove_modifier = pop_recently_conquered
}
every_owned_pop = {
set_citizenship_type = {
type = citizenship_full_machine
cooldown = yes
}
}
# Special graphics for Habitats and Ring Worlds
if = {
limit = {
is_planet_class = pc_habitat
}
spawn_habitat_nanobot_effect = yes
}
else_if = {
limit = {
is_planet_class = pc_ringworld_habitable
}
spawn_ringworld_nanobot_effect = yes
}
if = {
limit = {
OR = {
is_planet_class = pc_habitat
is_planet_class = pc_ringworld_habitable
}
}
# nothing
}
else = {
change_pc = this
}
}
else_if = {
limit = {
is_ringworld = yes
}
spawn_ringworld_nanobot_effect = yes
}
else_if = {
limit = {
is_planet_class = pc_ringworld_tech
}
spawn_ringworld_nanobot_effect = yes
}
else_if = {
limit = {
is_planet_class = pc_ringworld_seam
}
spawn_ringworld_nanobot_effect = yes
}
else = {
change_pc = pc_nanotech
add_modifier = {
modifier = "terraforming_candidate"
days = -1
}
random_list = {
25 = {
while = {
count = 4
add_deposit = d_nanites_deposit
}
}
25 = {
while = {
count = 3
add_deposit = d_nanites_deposit
}
}
25 = {
while = {
count = 2
add_deposit = d_nanites_deposit
}
}
25 = {
add_deposit = d_nanites_deposit
}
}
}
}
RG_destroy_star_system = {
every_system_ambient_object = {
limit = {

View File

@@ -546,4 +546,165 @@ situation_rg_gray_mod2 = {
}
destroy_situation = this
}
}
situation_rg_nanotech_consume_planet = {
complete_icon_frame = GFX_situation_outcome_frame_green
complete_icon = GFX_situation_exploding_planet
picture = {
trigger = {
target = { is_planet_class = pc_desert }
}
picture = GFX_evt_desert
}
picture = {
trigger = {
target = { is_planet_class = pc_tropical }
}
picture = GFX_evt_tropical
}
picture = {
trigger = {
target = { is_planet_class = pc_arid }
}
picture = GFX_evt_arid
}
picture = {
trigger = {
target = { is_planet_class = pc_continental }
}
picture = GFX_evt_continental
}
picture = {
trigger = {
target = { is_planet_class = pc_alpine }
}
picture = GFX_evt_alpine_city
}
picture = {
trigger = {
target = { is_planet_class = pc_savannah }
}
picture = GFX_evt_savannah
}
picture = {
trigger = {
target = { is_planet_class = pc_ocean }
}
picture = GFX_evt_ocean
}
picture = {
trigger = {
target = { is_planet_class = pc_tundra }
}
picture = GFX_evt_tundra
}
picture = {
trigger = {
target = { is_planet_class = pc_arctic }
}
picture = GFX_evt_arctic
}
picture = {
trigger = {
target = { is_planet_class = pc_gaia }
}
picture = GFX_evt_gaia
}
picture = {
trigger = {
target = { is_planet_class = pc_nuked }
}
picture = GFX_evt_tomb_world
}
picture = {
trigger = {
target = { is_planet_class = pc_hive }
}
picture = GFX_evt_infested
}
picture = {
trigger = {
target = { is_planet_class = pc_machine }
}
picture = GFX_evt_ai_planet
}
picture = {
trigger = {
target = { is_planet_class = pc_city }
}
picture = GFX_evt_city_planet
}
stages = {
stage_1 = {
icon = GFX_situation_stage_1
icon_background = GFX_situation_stage_frame_green
end = 1000
custom_tooltip = stage_slushify
}
}
category = positive
start_value = 0
on_progress_complete = {
custom_tooltip = nanotech_consume_finish_tooltip
hidden_effect = {
situation_event = { id = colony.200 }
}
}
on_monthly = {
events = {
colony.195 #Adds blockers and grants reward
}
}
on_abort = {
target = {
remove_planet_flag = being_devoured
remove_modifier = being_devoured_modifier
}
}
approach = {#Devour
name = approach_devour
on_select = {
custom_tooltip = nanotech_devour_effect
}
default = yes
icon = GFX_situation_approach_amenities
icon_background = GFX_situation_approach_bg_green
ai_weight = {
base = 10
}
}
approach = {#Restraint
name = approach_restraint
on_select = {
custom_tooltip = terravore_restraint_effect
owner = {
add_resource = { unity = -1000 }
}
abort_situation = this
}
icon = GFX_situation_approach_influence
icon_background = GFX_situation_approach_bg_yellow
ai_weight = {
base = 10
}
}
monthly_progress = {
base = 0
modifier = {
add = value:terravore_progress
desc = string_terravore_progress
}
}
abort_trigger = {
OR = {
NOT = { exists = target.owner }
target.owner = { NOT = { is_same_value = root.owner } }
}
}
}

View File

@@ -0,0 +1,39 @@
purge_nanophage = {
pop_escape_chance = 0.25
pop_decline_rate = 20 # 1 pop per 5 months, overrides BASE_POP_DECLINE, will only work on purge types
pop_modifier = {
pop_happiness = -0.5
}
potential = {
exists = from
from = {
has_tradition = tr_rg_nanotech_5
# has_trait = trait_necrophage
}
}
allow = {
hidden_trigger = { exists = from }
# custom_tooltip = {
# fail_text = CANNOT_NECROPHAGE_MACHINES
# is_robotic = no
# }
# if = {
# limit = { is_lonely_hive_mind_pop = no }
# custom_tooltip = {
# fail_text = PURGES_ALLOWED
# from = {
# OR = {
# has_valid_civic = civic_fanatic_purifiers
# has_policy_flag = purge_allowed
# }
# }
# }
# }
}
ai_will_do = {
factor = 200
}
}

View File

@@ -385,6 +385,22 @@ tech_object_gray_6 = {
}
}
tech_object_gray_7 = {
cost = 2000
area = physics
tier = 5
is_rare = yes
is_reverse_engineerable = no
category = {
particles
}
weight = 0
## unlock
ai_weight = {
factor = 0
}
}
tech_gray_machine = {
area = society

View File

@@ -69,6 +69,21 @@ tr_rg_nanotech_5 = {
}
custom_tooltip_with_modifiers = tr_rg_nanotech_5_modifier_desc
#Unlocks the nanite edicts
hidden_effect = {
every_owned_pop = {
limit = {
is_same_species = root
species = {
has_trait = rg_machine_maid_trait
}
}
modify_species = {
species = this
add_trait = rg_machine_maid_trait
}
species = { save_event_target_as = gray_owner_modded_species }
}
}
#Every 5 years, double the size of orbital nanite deposits that you're harvesting, up to a max of 50 OR spawns a number of nanite swarmers depending on the size of the deposit
ai_weight = {
factor = 1000
@@ -80,6 +95,12 @@ tr_rg_nanotech_3 = {
has_tradition = tr_rg_nanotech_5
}
custom_tooltip = tr_rg_nanotech_3_modifier_desc
on_enabled = {
give_technology = {
tech = tech_object_gray_7
message = no
}
}
#Unlocks Starbase Building and Make Nanite World Decision
ai_weight = {
factor = 1000
@@ -93,7 +114,7 @@ tr_rg_nanotech_4 = {
custom_tooltip = tr_rg_nanotech_4_modifier_desc
#Unlocks Nanite Swarmer ship and nanite ship component research options
on_enabled = {
rg_storm_relic_add = yes
}
ai_weight = {
factor = 1000