Skip to content

Commit

Permalink
P32 (#500)
Browse files Browse the repository at this point in the history
* Update CombatAI.cs

- when stopping npc, reset movement to null;
- periodically check primary hostile.

* Update WaypointMovement.cs

- velocity vector in the case of zero length is calculated in the direction of the unit;
- if at the start already at destination, then set Arrived to true.

* Camouflage

* Performance optimization

Update Zone.cs

- Mutex + HashSet insted of ImmutableHashSet.

Skip robotComponent update if not active.

* Update GlobalConfiguration.cs

- the camouflage bonus is now a robot property rather than a zone effect.

* - Better error handling, turrets shouldn't stuck now. Or lesser at least
- Energy fields are no longer mineable by indy turrets

* - Dead robots no more resurrecting by being unable to drop inexistent painting into loot

* - T1 Scorcher added

* - Added NOX modules

* no message

* - Last changes before test

* - Electric damage now penetrates shield

* - RCU are now aggro on players with molecular instability

* - Various changes

* Spectator revamp

* Changes made after testing

* - Added drones max speed and reactor sealing

---------

Co-authored-by: AqpAnaciy <101519462+aqpanaciy@users.noreply.github.com>
Co-authored-by: Dolzhukov, Viktor <u1158088@internal.imsglobal.com>
  • Loading branch information
3 people committed Sep 20, 2024
1 parent 4109c38 commit ee0906f
Show file tree
Hide file tree
Showing 77 changed files with 2,710 additions and 1,238 deletions.
38 changes: 30 additions & 8 deletions src/Perpetuum.Bootstrapper/PerpetuumBootstrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,12 @@ private void RegisterEffects()
_ = _builder.RegisterType<GangEffect>().Keyed<Effect>(EffectType.effect_aura_gang_armor_max);
_ = _builder.RegisterType<GangEffect>().Keyed<Effect>(EffectType.effect_aura_gang_shield_absorbtion_ratio);

// NOX effects

_ = _builder.RegisterType<NoxEffect>().Keyed<Effect>(EffectType.nox_effect_repair_negation);
_ = _builder.RegisterType<NoxEffect>().Keyed<Effect>(EffectType.nox_effect_shield_negation);
_ = _builder.RegisterType<NoxEffect>().Keyed<Effect>(EffectType.nox_effect_teleport_negation);

// intrusion effects

_ = _builder.RegisterType<CorporationEffect>().Keyed<Effect>(EffectType.effect_intrusion_geoscan_lvl1);
Expand Down Expand Up @@ -846,6 +852,8 @@ private void RegisterEntities()
RegisterRobot<SentryTurret>().OnActivated(e => e.Instance.SetCoreRecharger(e.Context.Resolve<ICoreRecharger>()));
RegisterRobot<IndustrialTurret>().OnActivated(e => e.Instance.SetCoreRecharger(e.Context.Resolve<ICoreRecharger>()));
RegisterRobot<CombatDrone>().OnActivated(e => e.Instance.SetCoreRecharger(e.Context.Resolve<ICoreRecharger>()));
RegisterRobot<IndustrialDrone>().OnActivated(e => e.Instance.SetCoreRecharger(e.Context.Resolve<ICoreRecharger>()));
RegisterRobot<SupportDrone>().OnActivated(e => e.Instance.SetCoreRecharger(e.Context.Resolve<ICoreRecharger>()));
RegisterRobot<PBSTurret>();
RegisterRobot<PunchBag>();

Expand Down Expand Up @@ -962,6 +970,7 @@ private void RegisterEntities()
RegisterModule<CoreBoosterModule>();
RegisterModule<SensorJammerModule>();
RegisterModule<EnergyNeutralizerModule>();
RegisterModule<ScorcherModule>();
RegisterModule<EnergyTransfererModule>();
RegisterModule<EnergyVampireModule>();
RegisterModule<GeoScannerModule>();
Expand All @@ -970,7 +979,10 @@ private void RegisterEntities()
RegisterModule<SiegeHackModule>();
RegisterModule<NeuralyzerModule>();
RegisterModule<BlobEmissionModulatorModule>();
RegisterModule<RemoteControllerModule>();
RegisterModule<TacticalRemoteControllerModule>();
RegisterModule<AssaultRemoteControllerModule>();
RegisterModule<IndustrialRemoteControllerModule>();
RegisterModule<SupportRemoteControllerModule>();
RegisterModule<TerraformMultiModule>();
RegisterModule<WallBuilderModule>();
RegisterModule<ConstructionModule>();
Expand All @@ -984,6 +996,7 @@ private void RegisterEntities()
RegisterEffectModule<StealthModule>();
RegisterEffectModule<DetectionModule>();
RegisterEffectModule<GangModule>();
RegisterEffectModule<NoxModule>();
RegisterEffectModule<ShieldGeneratorModule>();
RegisterEffectModule<MineDetectorModule>();

Expand Down Expand Up @@ -1115,12 +1128,10 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByCategoryFlags<WeaponAmmo>(CategoryFlags.cf_projectile_ammo);
ByCategoryFlags<WeaponAmmo>(CategoryFlags.cf_missile_ammo);
ByCategoryFlags<MiningAmmo>(CategoryFlags.cf_mining_ammo);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_sentry_turret_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_mining_turret_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_harvesting_turret_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_pelistal_combat_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_nuimqol_combat_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_thelodica_combat_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_assault_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_attack_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_industrial_drones_units);
ByCategoryFlags<RemoteControlledUnit>(CategoryFlags.cf_support_drones_units);
ByCategoryFlags<TileScannerAmmo>(CategoryFlags.cf_mining_probe_ammo_tile);
ByCategoryFlags<OneTileScannerAmmo>(CategoryFlags.cf_mining_probe_ammo_one_tile);
ByCategoryFlags<ArtifactScannerAmmo>(CategoryFlags.cf_mining_probe_ammo_artifact);
Expand Down Expand Up @@ -1198,6 +1209,7 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByCategoryFlags<CoreBoosterModule>(CategoryFlags.cf_core_boosters, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_core_booster_ammo));
ByCategoryFlags<SensorJammerModule>(CategoryFlags.cf_sensor_jammers);
ByCategoryFlags<EnergyNeutralizerModule>(CategoryFlags.cf_energy_neutralizers);
ByCategoryFlags<ScorcherModule>(CategoryFlags.cf_scorchers);
ByCategoryFlags<EnergyTransfererModule>(CategoryFlags.cf_energy_transferers);
ByCategoryFlags<EnergyVampireModule>(CategoryFlags.cf_energy_vampires);
ByCategoryFlags<DrillerModule>(CategoryFlags.cf_drillers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_mining_ammo));
Expand All @@ -1210,7 +1222,10 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByCategoryFlags<SiegeHackModule>(CategoryFlags.cf_siege_hack_modules);
ByCategoryFlags<NeuralyzerModule>(CategoryFlags.cf_neuralyzer);
ByCategoryFlags<BlobEmissionModulatorModule>(CategoryFlags.cf_blob_emission_modulator, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_blob_emission_modulator_ammo));
ByCategoryFlags<RemoteControllerModule>(CategoryFlags.cf_remote_controllers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_remote_controlled_units));
ByCategoryFlags<TacticalRemoteControllerModule>(CategoryFlags.cf_tactical_remote_controllers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_attack_drones_units));
ByCategoryFlags<AssaultRemoteControllerModule>(CategoryFlags.cf_assault_remote_controllers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_assault_drones_units));
ByCategoryFlags<IndustrialRemoteControllerModule>(CategoryFlags.cf_industrial_remote_controllers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_industrial_drones_units));
ByCategoryFlags<SupportRemoteControllerModule>(CategoryFlags.cf_support_remote_controllers, new NamedParameter("ammoCategoryFlags", CategoryFlags.cf_support_drones_units));
ByCategoryFlags<WebberModule>(CategoryFlags.cf_webber);
ByCategoryFlags<SensorDampenerModule>(CategoryFlags.cf_sensor_dampeners);
ByCategoryFlags<RemoteSensorBoosterModule>(CategoryFlags.cf_remote_sensor_boosters);
Expand Down Expand Up @@ -1250,6 +1265,9 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByCategoryFlags<GangModule>(CategoryFlags.cf_gang_assist_ewar, new NamedParameter("effectType", EffectType.effect_aura_gang_ewar_optimal), new NamedParameter("effectModifier", AggregateField.effect_ew_optimal_range_modifier));
ByCategoryFlags<GangModule>(CategoryFlags.cf_gang_assist_fast_extracting, new NamedParameter("effectType", EffectType.effect_aura_gang_fast_extraction), new NamedParameter("effectModifier", AggregateField.effect_gathering_cycle_time_modifier));
ByCategoryFlags<NoxModule>(CategoryFlags.cf_nox_shield_negators, new NamedParameter("effectType", EffectType.nox_effect_shield_negation), new NamedParameter("effectModifier", AggregateField.nox_shield_absorbtion_modifier));
ByCategoryFlags<NoxModule>(CategoryFlags.cf_nox_repair_negators, new NamedParameter("effectType", EffectType.nox_effect_repair_negation), new NamedParameter("effectModifier", AggregateField.nox_repair_amount_modifier));
ByCategoryFlags<NoxModule>(CategoryFlags.cf_nox_teleport_negators, new NamedParameter("effectType", EffectType.nox_effect_teleport_negation), new NamedParameter("effectModifier", AggregateField.nox_teleport_negation));
ByCategoryFlags<SystemContainer>(CategoryFlags.cf_logical_storage);
ByCategoryFlags<Item>(CategoryFlags.cf_mission_items);
Expand All @@ -1260,6 +1278,10 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByCategoryFlags<IndustrialTurret>(CategoryFlags.cf_mining_turrets);
ByCategoryFlags<IndustrialTurret>(CategoryFlags.cf_harvesting_turrets);
ByCategoryFlags<CombatDrone>(CategoryFlags.cf_combat_drones);
ByCategoryFlags<CombatDrone>(CategoryFlags.cf_assault_drones);
ByCategoryFlags<CombatDrone>(CategoryFlags.cf_attack_drones);
ByCategoryFlags<SupportDrone>(CategoryFlags.cf_support_drones);
ByCategoryFlags<IndustrialDrone>(CategoryFlags.cf_industrial_drones);
ByCategoryFlags<Item>(CategoryFlags.cf_reactor_cores);
ByCategoryFlags<Kiosk>(CategoryFlags.cf_kiosk);
ByCategoryFlags<AlarmSwitch>(CategoryFlags.cf_alarm_switch);
Expand Down
40 changes: 40 additions & 0 deletions src/Perpetuum.ExportedTypes/AggregateField.cs
Original file line number Diff line number Diff line change
Expand Up @@ -440,5 +440,45 @@ public enum AggregateField
remote_control_operational_range_modifier = 676,
remote_control_lifetime = 677,
remote_control_lifetime_modifier = 678,
electric_damage = 679,
nox_effect_enhancer_radius_modifier = 683,
nox_shield_absorbtion_modifier = 684,
nox_shield_absorbtion_modifier_enhancer = 685,
nox_repair_amount_modifier = 687,
nox_repair_amount_modifier_enhancer = 688,
nox_teleport_negation = 689,
ppm_pelistal_plasma_consumption = 690,
ppm_nuimqol_plasma_consumption = 691,
ppm_thelodica_plasma_consumption = 692,
drone_amplification_damage_modifier = 693,
drone_amplification_damage_modifier_modifier = 694,
drone_amplification_locking_time_modifier = 695,
drone_amplification_locking_time_modifier_modifier = 696,
drone_amplification_cycle_time_modifier = 697,
drone_amplification_cycle_time_modifier_modifier = 698,
drone_amplification_armor_max_modifier = 699,
drone_amplification_armor_max_modifier_modifier = 700,
drone_amplification_mining_amount_modifier = 701,
drone_amplification_mining_amount_modifier_modifier = 702,
drone_amplification_harvesting_amount_modifier = 703,
drone_amplification_harvesting_amount_modifier_modifier = 704,
drone_amplification_remote_repair_amount_modifier = 705,
drone_amplification_remote_repair_amount_modifier_modifier = 706,
drone_amplification_remote_repair_cycle_time_modifier = 707,
drone_amplification_remote_repair_cycle_time_modifier_modifier = 708,
drone_amplification_core_max_modifier = 709,
drone_amplification_core_max_modifier_modifier = 710,
drone_amplification_core_recharge_time_modifier = 711,
drone_amplification_core_recharge_time_modifier_modifier = 712,
drone_amplification_long_range_modifier = 713,
drone_amplification_long_range_modifier_modifier = 714,
drone_amplification_accuracy_modifier = 715,
drone_amplification_accuracy_modifier_modifier = 716,
drone_amplification_speed_max_modifier = 717,
drone_amplification_speed_max_modifier_modifier = 718,
drone_amplification_reactor_radiation_modifier = 719,
drone_amplification_reactor_radiation_modifier_modifier = 720,
cpu_usage_remote_controller_modifier = 721,
powergrid_usage_remote_controller_modifier = 722,
}
}
19 changes: 19 additions & 0 deletions src/Perpetuum.ExportedTypes/CategoryFlags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ public enum CategoryFlags : long
cf_nuimqol_combat_drones_units = 0x000000000202120A,
cf_thelodica_combat_drones_units = 0x000000000302120A,

cf_attack_drones_units = 0x000000000003120A,
cf_assault_drones_units = 0x000000000004120A,
cf_industrial_drones_units = 0x000000000005120A,
cf_support_drones_units = 0x000000000006120A,

cf_robot_equipment = 0x000000000000000F,
cf_armor_equipment = 0x000000000000010F,
cf_armor_plates = 0x000000000001010F,
Expand Down Expand Up @@ -193,6 +198,10 @@ public enum CategoryFlags : long
cf_stealth_modules = 0x00000000000A040F,
cf_target_painter = 0x00000000000B040F,
cf_remote_controllers = 0x00000000000C040F,
cf_tactical_remote_controllers = 0x00000000010C040F,
cf_assault_remote_controllers = 0x00000000020C040F,
cf_industrial_remote_controllers = 0x00000000030C040F,
cf_support_remote_controllers = 0x00000000040C040F,
cf_electronic_warfare_equipment = 0x000000000000050F,
cf_webber = 0x000000000001050F,
cf_shortrange_webber = 0x000000000101050F,
Expand Down Expand Up @@ -270,6 +279,8 @@ public enum CategoryFlags : long
cf_medium_industrial_aoe = 0x00000000020A070F,
cf_large_industrial_aoe = 0x00000000030A070F,
cf_sentry_turret_guns = 0x00000000000C070F,
cf_electric_weapons = 0x00000000000D070F,
cf_scorchers = 0x00000000010D070F,
cf_terraforming_equipment = 0x000000000000080F,
cf_small_terraformer = 0x000000000001080F,
cf_terraforming_digger = 0x000000000002080F,
Expand All @@ -294,6 +305,10 @@ public enum CategoryFlags : long
cf_ew_resist = 0x0000000000010A0F,
cf_lock_breaker = 0x0000000000020A0F,
cf_overcharged_armor_resist = 0x0000000000030A0F,
cf_nox_modules = 0x0000000000000B0F,
cf_nox_shield_negators = 0x0000000000010B0F,
cf_nox_repair_negators = 0x0000000000020B0F,
cf_nox_teleport_negators = 0x0000000000030B0F,

cf_material = 0x0000000000000014,
cf_raw_material = 0x0000000000000114,
Expand Down Expand Up @@ -571,6 +586,10 @@ public enum CategoryFlags : long
cf_mining_turrets = 0x0000000000000E92,
cf_harvesting_turrets = 0x0000000000000F92,
cf_combat_drones = 0x0000000000001092,
cf_assault_drones = 0x0000000000001192,
cf_industrial_drones = 0x0000000000001292,
cf_support_drones = 0x0000000000001392,
cf_attack_drones = 0x0000000000001492,

cf_production_items = 0x0000000000000094,
cf_research_kits = 0x0000000000000194,
Expand Down
1 change: 1 addition & 0 deletions src/Perpetuum.ExportedTypes/EffectCategory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,6 @@ public enum EffectCategory : long
effcat_zone_effects = 0x0000100000000000, // OPP: New Zone effects
effcat_environmental_effects = 0x0000200000000000, // OPP: New Zone effects
effcat_mine_detection = 0x0000400000000000, // OPP: Mine detection
effcat_drones_amplification = 0x0002000000000000, // OPP: Drone amplification
}
}
4 changes: 4 additions & 0 deletions src/Perpetuum.ExportedTypes/EffectType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,9 @@ public enum EffectType
effect_gamma_tc = 120,
effect_mine_detector = 121,
effect_tellesis = 122,
nox_effect_shield_negation = 123,
nox_effect_repair_negation = 124,
nox_effect_teleport_negation = 125,
drone_amplification = 126,
}
}
Loading

0 comments on commit ee0906f

Please sign in to comment.