Merge pull request #424 from Fate-JH/fte1

First Time Events
This commit is contained in:
Mazo 2020-05-10 19:49:19 +01:00 committed by GitHub
commit b80ca309f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 346 additions and 3 deletions

View file

@ -46,6 +46,9 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet
}
private val deployables : DeployableToolbox = new DeployableToolbox
private var firstTimeEvents : List[String] = List[String]()
/**
* Looking For Squad:<br>
* Indicates both a player state and the text on the marquee under the player nameplate.
@ -192,6 +195,15 @@ class Avatar(private val char_id : Long, val name : String, val faction : Planet
def Deployables : DeployableToolbox = deployables
def FirstTimeEvents : List[String] = firstTimeEvents
def FirstTimeEvents_=(event : String) : List[String] = FirstTimeEvents_=(List(event))
def FirstTimeEvents_=(events : List[String]) : List[String] = {
firstTimeEvents ++= events
FirstTimeEvents
}
def LFS : Boolean = lfs
def LFS_=(looking : Boolean) : Boolean = {

View file

@ -591,6 +591,8 @@ class Player(private val core : Avatar) extends PlanetSideServerObject
isBackpack && (backpackAccess.isEmpty || backpackAccess.contains(player.GUID))
}
def FirstTimeEvents : List[String] = core.FirstTimeEvents
def VehicleSeated : Option[PlanetSideGUID] = vehicleSeated
def VehicleSeated_=(guid : PlanetSideGUID) : Option[PlanetSideGUID] = VehicleSeated_=(Some(guid))

View file

@ -0,0 +1,320 @@
// Copyright (c) 2020 PSForever
package net.psforever.objects.avatar
object FirstTimeEvents {
object TR {
val InfantryWeapons : Set[String] = Set(
"used_chainblade","used_repeater","used_cycler","used_mini_chaingun","used_striker",
"used_anniversary_guna"
)
val Vehicles : Set[String] = Set(
"used_heavy_grenade_launcher",
"used_apc_tr_weapon",
"used_15mm_chaingun",
"used_105mm_cannon",
"used_colossus_burster",
"used_colossus_chaingun",
"used_colossus_cluster_bomb_pod",
"used_colossus_dual_100mm_cannons",
"used_colossus_tank_cannon",
"visited_threemanheavybuggy","visited_battlewagon","visited_apc_tr","visited_prowler",
"visited_colossus_flight","visited_colossus_gunner"
)
val Other : Set[String] = Set(
"used_trhev_dualcycler","used_trhev_pounder","used_trhev_burster",
"used_colossus_dual_100mm_cannons","used_colossus_tank_cannon",
"used_energy_gun_tr",
"visited_portable_manned_turret_tr"
)
val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other
}
object NC {
val InfantryWeapons : Set[String] = Set(
"used_magcutter","used_isp","used_gauss","used_r_shotgun","used_hunterseeker",
"used_anniversary_gun"
)
val Vehicles : Set[String] = Set(
"used_firebird",
"used_gauss_cannon",
"used_apc_nc_weapon",
"used_vanguard_weapons",
"used_peregrine_dual_machine_gun",
"used_peregrine_dual_rocket_pods",
"used_peregrine_mechhammer",
"used_peregrine_particle_cannon",
"used_peregrine_sparrow",
"visited_twomanheavybuggy","visited_thunderer","visited_apc_nc","visited_vanguard",
"visited_peregrine_flight","visited_peregrine_gunner"
)
val Other : Set[String] = Set(
"used_nchev_scattercannon","used_nchev_falcon","used_nchev_sparrow",
"used_energy_gun_nc",
"visited_portable_manned_turret_nc"
)
val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other
}
object VS {
val InfantryWeapons : Set[String] = Set(
"used_forceblade","used_beamer","used_pulsar","used_lasher","used_lancer",
"used_anniversary_gunb"
)
val Vehicles : Set[String] = Set(
"used_fluxpod",
"used_apc_vs_weapon",
"used_heavy_rail_beam",
"used_pulsed_particle_accelerator",
"used_flux_cannon",
"used_aphelion_laser",
"used_aphelion_starfire",
"used_aphelion_immolation_cannon",
"used_aphelion_plasma_rocket_pod",
"used_aphelion_ppa",
"visited_twomanhoverbuggy","visited_aurora","visited_apc_vs","visited_magrider",
"visited_aphelion_flight","visited_aphelion_gunner"
)
val Other : Set[String] = Set(
"used_vshev_quasar","used_vshev_comet","used_vshev_starfire",
"used_energy_gun_vs",
"visited_portable_manned_turret_vs"
)
val All : Set[String] = InfantryWeapons ++ Vehicles ++ Other
}
object Standard {
val InfantryWeapons : Set[String] = Set(
"used_grenade_plasma","used_grenade_jammer","used_grenade_frag",
"used_katana",
"used_ilc9","used_suppressor","used_punisher","used_flechette","used_phoenix","used_thumper","used_rocklet","used_bolt_driver","used_heavy_sniper","used_oicw","used_flamethrower"
)
val Vehicles : Set[String] = Set(
"used_armor_siphon",
"used_ntu_siphon",
"used_ballgun",
"used_skyguard_weapons",
"used_reaver_weapons",
"used_lightning_weapons",
"used_wasp_weapon_system",
"used_20mm_cannon",
"used_25mm_cannon",
"used_35mm_cannon",
"used_35mm_rotarychaingun",
"used_75mm_cannon",
"used_rotarychaingun",
"used_vulture_bombardier",
"used_vulture_nose_cannon",
"used_vulture_tail_cannon",
"used_liberator_bombardier",
"visited_ams","visited_ant",
"visited_quadassault","visited_fury","visited_quadstealth",
"visited_two_man_assault_buggy","visited_skyguard",
"visited_mediumtransport","visited_apc","visited_lightning",
"visited_mosquito","visited_lightgunship","visited_wasp",
"visited_liberator","visited_vulture","visited_dropship","visited_galaxy_gunship",
"visited_phantasm","visited_lodestar"
)
val Facilities : Set[String] = Set(
"visited_broadcast_warpgate","visited_warpgate_small",
"visited_respawn_terminal","visited_deconstruction_terminal",
"visited_capture_terminal","visited_secondary_capture","visited_LLU_socket","visited_resource_silo",
"visited_med_terminal","visited_adv_med_terminal","visited_repair_silo",
"visited_order_terminal","visited_certification_terminal","visited_implant_terminal","visited_locker",
"visited_ground_vehicle_terminal","visited_bfr_terminal","visited_air_vehicle_terminal","visited_galaxy_terminal",
"visited_generator","visited_generator_terminal",
"visited_wall_turret","used_phalanx","used_phalanx_avcombo","used_phalanx_flakcombo",
"visited_external_door_lock"
)
val Other : Set[String] = Set(
"used_command_uplink",
"used_med_app","used_nano_dispenser","used_bank","used_ace","used_advanced_ace","used_rek","used_trek","used_laze_pointer","used_telepad",
"visited_motion_sensor","visited_sensor_shield",
"visited_spitfire_turret","visited_spitfire_cloaked","visited_spitfire_aa",
"visited_shield_generator","visited_tank_traps"
)
val All : Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other
}
object Cavern {
val InfantryWeapons : Set[String] = Set(
"used_spiker","used_radiator","used_maelstrom"
)
val Vehicles : Set[String] = Set(
"used_scythe",
"used_flail_weapon",
"visited_switchblade","visited_flail","visited_router"
)
val Facilities : Set[String] = Set(
"used_ancient_turret_weapon",
"visited_vanu_control_console",
"visited_ancient_air_vehicle_terminal",
"visited_ancient_equipment_terminal",
"visited_ancient_ground_vehicle_terminal",
"visited_health_crystal",
"visited_repair_crystal",
"visited_vehicle_crystal",
"visited_damage_crystal",
"visited_energy_crystal"
)
val Other : Set[String] = Set(
"visited_vanu_module"
)
val All : Set[String] = InfantryWeapons ++ Vehicles ++ Facilities ++ Other
}
val Maps : Set[String] = Set(
"map01","map02","map03","map04","map05","map06","map07","map08","map09","map10",
"map11","map12","map13","map14","map15","map16",
"ugd01","ugd02","ugd03","ugd04","ugd05","ugd06",
"map96","map97","map98","map99"
)
val Monoliths : Set[String] = Set(
"visited_monolith_amerish",
"visited_monolith_ceryshen",
"visited_monolith_cyssor",
"visited_monolith_esamir",
"visited_monolith_forseral",
"visited_monolith_hossin",
"visited_monolith_ishundar",
"visited_monolith_searhus",
"visited_monolith_solsar"
)
val Gingerman : Set[String] = Set(
"visited_gingerman_atar",
"visited_gingerman_dahaka",
"visited_gingerman_hvar",
"visited_gingerman_izha",
"visited_gingerman_jamshid",
"visited_gingerman_mithra",
"visited_gingerman_rashnu",
"visited_gingerman_sraosha",
"visited_gingerman_yazata",
"visited_gingerman_zal"
)
val Sled : Set[String] = Set(
"visited_sled01",
"visited_sled02",
"visited_sled04",
"visited_sled05",
"visited_sled06",
"visited_sled07",
"visited_sled08",
"visited_sled09"
)
val Snowman : Set[String] = Set(
"visited_snowman_amerish",
"visited_snowman_ceryshen",
"visited_snowman_cyssor",
"visited_snowman_esamir",
"visited_snowman_forseral",
"visited_snowman_hossin",
"visited_snowman_ishundar",
"visited_snowman_searhus",
"visited_snowman_solsar"
)
val Charlie : Set[String] = Set(
"visited_charlie01",
"visited_charlie02",
"visited_charlie03",
"visited_charlie04",
"visited_charlie05",
"visited_charlie06",
"visited_charlie07",
"visited_charlie08",
"visited_charlie09"
)
val BattleRanks : Set[String] = Set(
"xpe_battle_rank_1","xpe_battle_rank_2","xpe_battle_rank_3","xpe_battle_rank_4","xpe_battle_rank_5",
"xpe_battle_rank_6","xpe_battle_rank_7","xpe_battle_rank_8","xpe_battle_rank_9","xpe_battle_rank_10",
"xpe_battle_rank_11","xpe_battle_rank_12","xpe_battle_rank_13","xpe_battle_rank_14","xpe_battle_rank_15",
"xpe_battle_rank_16","xpe_battle_rank_17","xpe_battle_rank_18","xpe_battle_rank_19","xpe_battle_rank_20",
"xpe_battle_rank_21","xpe_battle_rank_22","xpe_battle_rank_23","xpe_battle_rank_24","xpe_battle_rank_25",
"xpe_battle_rank_26","xpe_battle_rank_27","xpe_battle_rank_28","xpe_battle_rank_29","xpe_battle_rank_30",
"xpe_battle_rank_31","xpe_battle_rank_32","xpe_battle_rank_33","xpe_battle_rank_34","xpe_battle_rank_35",
"xpe_battle_rank_36","xpe_battle_rank_37","xpe_battle_rank_38","xpe_battle_rank_39","xpe_battle_rank_40"
)
val CommandRanks : Set[String] = Set(
"xpe_command_rank_1","xpe_command_rank_2","xpe_command_rank_3","xpe_command_rank_4","xpe_command_rank_5"
)
val Training : Set[String] = Set(
"training_welcome",
"training_map",
"training_hart",
"training_warpgates",
"training_weapons01",
"training_armors",
"training_healing",
"training_certifications",
"training_inventory",
"training_vehicles",
"training_implants"
)
val OldTraining : Set[String] = Set(
"training_start_tr",
"training_start_nc",
"training_start_vs"
)
val Generic : Set[String] = Set(
"xpe_overhead_map",
"xpe_mail_alert",
"xpe_join_platoon",
"xpe_form_platoon",
"xpe_join_outfit",
"xpe_form_outfit",
"xpe_join_squad",
"xpe_form_squad",
"xpe_blackops",
"xpe_instant_action",
"xpe_orbital_shuttle",
"xpe_drop_pod",
"xpe_sanctuary_help",
"xpe_bind_facility",
"xpe_warp_gate",
"xpe_warp_gate_usage",
"xpe_bind_ams",
"xpe_th_nonsanc",
"xpe_th_ammo",
"xpe_th_firemodes",
"xpe_th_cloak",
"xpe_th_max",
"xpe_th_ant",
"xpe_th_ams",
"xpe_th_ground",
"xpe_th_ground_p",
"xpe_th_air",
"xpe_th_air_p",
"xpe_th_afterburner",
"xpe_th_hover",
"xpe_th_switchblade",
"xpe_th_router",
"xpe_th_flail",
"xpe_th_bfr"
)
}

View file

@ -148,7 +148,7 @@ object AvatarConverter {
None,
MakeImplantEntries(obj),
Nil, Nil,
firstTimeEvents = List.empty[String], //TODO fte list
obj.FirstTimeEvents,
tutorials = List.empty[String], //TODO tutorial list
0L, 0L, 0L, 0L, 0L,
Some(DCDExtra2(0, 0)),

View file

@ -17,7 +17,7 @@ import scodec.bits.ByteVector
import csr.{CSRWarp, CSRZone, Traveler}
import MDCContextAware.Implicits._
import net.psforever.objects._
import net.psforever.objects.avatar.{Certification, DeployableToolbox}
import net.psforever.objects.avatar.{Certification, DeployableToolbox, FirstTimeEvents}
import net.psforever.objects.ballistics.{PlayerSource, Projectile, ProjectileResolution, ResolvedProjectile, SourceEntry}
import net.psforever.objects.ce.{ComplexDeployable, Deployable, DeployableCategory, DeployedItem, SimpleDeployable, TelepadLike}
import net.psforever.objects.definition._
@ -3736,6 +3736,7 @@ class WorldSessionActor extends Actor
whenUsedLastMAXName(2) = faction + "hev_antipersonnel"
whenUsedLastMAXName(3) = faction + "hev_antivehicular"
whenUsedLastMAXName(1) = faction + "hev_antiaircraft"
avatar.FirstTimeEvents = ftes
accountPersistence ! AccountPersistenceService.Login(lName)
case _ =>
log.error(s"CharacterRequest/Select: no character for $charId found")
@ -5990,7 +5991,8 @@ class WorldSessionActor extends Actor
}
case msg @ AvatarFirstTimeEventMessage(avatar_guid, object_guid, unk1, event_name) =>
log.info("AvatarFirstTimeEvent: " + msg)
log.info(s"AvatarFirstTimeEvent: $event_name")
avatar.FirstTimeEvents += event_name
case msg @ WarpgateRequest(continent_guid, building_guid, dest_building_guid, dest_continent_guid, unk1, unk2) =>
log.info(s"WarpgateRequest: $msg")
@ -11227,6 +11229,13 @@ object WorldSessionActor {
private final case class VehicleLoaded(vehicle : Vehicle)
private final case class ZoningReset()
final val ftes = (
FirstTimeEvents.Maps ++ FirstTimeEvents.Monoliths ++
FirstTimeEvents.Standard.All ++ FirstTimeEvents.Cavern.All ++
FirstTimeEvents.TR.All ++ FirstTimeEvents.NC.All ++ FirstTimeEvents.VS.All ++
FirstTimeEvents.Generic
).toList
/**
* The message that progresses some form of user-driven activity with a certain eventual outcome
* and potential feedback per cycle.