170 Commits over 61 Days - 0.12cph!
Only remove helmet if not god mode, and on host
More spawn protection tweaks
Only reduce armor if not god mode
Spawn protection outline tweaks
Spawn protection for deathmatch modes
Gamemode selection when hosting
Maps can include multiple GameMode obejcts, lobby creation page lists them
Started on deathmatch game mode
WIP TDM
Deathmatch spawn points
Duration option in ShowToast
TDM game rules
Update bomb_defusal components
Basic weapon state persisting system for dropped weapons
Persist AmmoComponent for dropped weapons
Fixes #39
Get rid of plant cancel reset delay
It was just confusing
Weapons can be limited to one team
Don't let CTs pick up C4
IUse.OnUse can return void
Make sure held C4 gets destroyed between rounds
Can buy anywhere while waiting for players
Use WeaponSlot for UI / change weapon inputs
Primary is always 1, secondary always 2, etc
Expose some more stuff for UI
Some helpers to get planting / defusing state for UI
C4 can be planted with Use too
PlayerController IUse refactor
Defusal scenario objective bonus income
Fix loss streak income
Kill rewards, friendly fire penalty
Half time team swap
Remove defuse kit on inventory clear
PlayerController.Teleport(Transform), redo spawn point logic
NetDictionary.GetValueOrDefault() extension
Loss streak income
Some default status text for game phases
Disable BuyAnywhere in bomb_defusal
JsonIgnore some stuff in TeamScoring
Keep track of round win history
Everyone has a defuse kit
Team income from round win / loss
Some team income values
Getting started on income, set start money
Shuffle around where weapons get allocated to fix bomb not spawning
Look for game state change listeners in the whole scene
DroppedWeapon destroying is handled by DestroyBetweenRounds
DestroyBetweenRounds component
Show which team won in status text
CTs win if time runs out
Actually set IsDefused to true
Notify OnBombDefused listeners
RoundTimer component doesn't exist now
Add trigger collider to C4
Make PlayerController.IsFrozen host controlled, use for planting
PlayerInventory.HasDefuseKit
WIP move IUse to host, bomb defusing
Fixed hiding timer on bomb plant
Refactor game status / timer display
BombDefusalScenario, round end conditions
Bomb listener interfaces, explosion does damage
A little safety for calling ResumeGame() mutliple times
Make game loop into a resumable state machine
Pause Game Start dev command
PlayerInventory.CanTakeWeapon(WeaponData)
Limit to one per slot (except grenades)
SpecialWeaponAllocator, use to give bomb to one player on T side
Slot property in WeaponData
Fix weapon references in bomb_defusal game mode
Bomb sites specify explosion damage range
So it can be tuned per map
Use bomb defuse gamemode in de_garry
Zone component, used by bombsite
BombSite component, update BombSite_A.prefab
Put spectators on a team at round end
WIP try to avoid double-assigning weapons
Fix hotloading SingletonComponents
Fix networking player respawning / team assignment