From 774c826682e243fbe3fa0284058754549b07d090 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 17 Nov 2018 19:03:28 +0100 Subject: [PATCH] Start with weapons loaded --- .../Weapons.ocd/AntiTankWeapon.ocd/Script.c | 2 ++ .../Weapons.ocd/AssaultRifle.ocd/Script.c | 14 ++++++++++++++ .../Weapons.ocd/GrenadeLauncher.ocd/Script.c | 2 ++ .../Weapons.ocd/MachineGun.ocd/Script.c | 2 ++ .../Items.ocd/Weapons.ocd/Pistol.ocd/Script.c | 2 ++ .../Weapons.ocd/Revolver.ocd/Script.c | 2 ++ .../Weapons.ocd/RocketLauncher.ocd/Script.c | 2 ++ .../Weapons.ocd/Shotgun.ocd/Script.c | 2 ++ .../Weapons.ocd/SubmachineGun.ocd/Script.c | 2 ++ .../Libraries.ocd/Firearm.ocd/Script.c | 19 +++++++++++++++++++ 10 files changed, 49 insertions(+) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/AntiTankWeapon.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/AntiTankWeapon.ocd/Script.c index 4bb4871..fb606f5 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/AntiTankWeapon.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/AntiTankWeapon.ocd/Script.c @@ -19,6 +19,8 @@ public func Initialize() ClearFiremodes(); AddFiremode(FiremodeMissiles_TechniqueOptical()); AddFiremode(FiremodeMissiles_TechniqueUnguided()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/AssaultRifle.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/AssaultRifle.ocd/Script.c index b7949d7..219aaaf 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/AssaultRifle.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/AssaultRifle.ocd/Script.c @@ -27,6 +27,7 @@ public func Initialize() AddFiremode(FiremodeGrenades_Cluster()); AddFiremode(FiremodeGrenades_Smoke()); + StartLoaded(); } func Definition(id weapon) @@ -203,6 +204,19 @@ local ReloadStateMap = Magazine_LoadAmmoChamber = { Delay = 15, EndCall = "PlaySoundChamberBullet", }, }; + +public func AmmoChamberCapacity(id ammo) +{ + if (ammo == CMC_Ammo_Bullets) + { + return 1; + } + else + { + return 0; + } +} + /* --- Effects --- */ func OnFireProjectile(object user, object projectile, proplist firemode) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/GrenadeLauncher.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/GrenadeLauncher.ocd/Script.c index af85e56..ac8032d 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/GrenadeLauncher.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/GrenadeLauncher.ocd/Script.c @@ -22,6 +22,8 @@ public func Initialize() AddFiremode(FiremodeGrenades_Explosive()); AddFiremode(FiremodeGrenades_Cluster()); AddFiremode(FiremodeGrenades_Smoke()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/MachineGun.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/MachineGun.ocd/Script.c index 5444e6f..767ce5b 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/MachineGun.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/MachineGun.ocd/Script.c @@ -21,6 +21,8 @@ public func Initialize() ClearFiremodes(); AddFiremode(FiremodeBullets_TechniqueAuto()); AddFiremode(FiremodeBullets_TechniqueBurst()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Pistol.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Pistol.ocd/Script.c index c7a6a41..c177b92 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Pistol.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Pistol.ocd/Script.c @@ -22,6 +22,8 @@ public func Initialize() ClearFiremodes(); AddFiremode(FiremodeBullets_TechniqueSingle()); AddFiremode(FiremodeBullets_TechniqueTracerDart()); + + StartLoaded(); } func Definition(id def) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Revolver.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Revolver.ocd/Script.c index 1a15178..fa5379a 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Revolver.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Revolver.ocd/Script.c @@ -22,6 +22,8 @@ public func Initialize() // Fire mode list ClearFiremodes(); AddFiremode(FiremodeBullets_TechniqueSingle()); + + StartLoaded(); } diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/RocketLauncher.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/RocketLauncher.ocd/Script.c index c267c86..d63a31f 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/RocketLauncher.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/RocketLauncher.ocd/Script.c @@ -24,6 +24,8 @@ public func Initialize() ClearFiremodes(); AddFiremode(FiremodeMissiles_TechniqueOptical()); AddFiremode(FiremodeMissiles_TechniqueUnguided()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Shotgun.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Shotgun.ocd/Script.c index 43bd9a8..b445963 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/Shotgun.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/Shotgun.ocd/Script.c @@ -21,6 +21,8 @@ public func Initialize() // Fire mode list ClearFiremodes(); AddFiremode(FiremodeBullets_TechniqueSpreadshot()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Items.ocd/Weapons.ocd/SubmachineGun.ocd/Script.c b/ModernCombat.ocd/Items.ocd/Weapons.ocd/SubmachineGun.ocd/Script.c index 7bd665f..62ce4bd 100755 --- a/ModernCombat.ocd/Items.ocd/Weapons.ocd/SubmachineGun.ocd/Script.c +++ b/ModernCombat.ocd/Items.ocd/Weapons.ocd/SubmachineGun.ocd/Script.c @@ -23,6 +23,8 @@ public func Initialize() AddFiremode(FiremodeBullets_TechniqueAuto()); AddFiremode(FiremodeBullets_TechniqueBurst()); AddFiremode(FiremodeBullets_TechniqueSingle()); + + StartLoaded(); } func Definition(id weapon) diff --git a/ModernCombat.ocd/Libraries.ocd/Firearm.ocd/Script.c b/ModernCombat.ocd/Libraries.ocd/Firearm.ocd/Script.c index e33818c..b9dcf7e 100644 --- a/ModernCombat.ocd/Libraries.ocd/Firearm.ocd/Script.c +++ b/ModernCombat.ocd/Libraries.ocd/Firearm.ocd/Script.c @@ -913,3 +913,22 @@ func IsUserReadyToReload(object user) { return user->HasActionProcedure(false); } + +func StartLoaded() +{ + var ammo_types = []; + for (var firemode in GetFiremodes()) + { + // Do it only once per ammo type + var type = firemode->GetAmmoID(); + var amount = firemode->GetAmmoAmount(); + if (!IsValueInArray(ammo_types, type)) + { + // Loaded + SetAmmo(type, amount); + // Bullet is chambered (library call already checks whether it is necessary, etc.) + this->~AmmoChamberInsert(type); + PushBack(ammo_types, type); + } + } +}