Stunning weapon

In this forum you will find and post information regarding the modding of Star Wars Battlefront 2. DO NOT POST MOD IDEAS/REQUESTS.

Moderator: Moderators

Post Reply
User avatar
Dakota
Field Commander
Field Commander
Posts: 991
Joined: Mon Dec 06, 2010 8:21 pm
Projects :: making random weapon assets
Games I'm Playing :: SWBF2 and more
xbox live or psn: PS3 beats xbox
Location: at a computer desk floating around in space

Stunning weapon

Post by Dakota »

i made this crazy zapping weapon that shocks all units and stuns them (maybe like freezing time) but i just needed to know what i did wrong when i did this. do i need an animation for it to work or is there more?

here is the odf of the weapon ord.
Hidden/Spoiler:
[OrdnanceClass]

ClassLabel = "emitterordnance"

[Properties]
Explosion = "com_weap_inf_force_zap_exp"

ImpactEffectWater = "com_sfx_watersplash_ord"

ConeLength = "1000"
ConeAngle = "360"
FirstRadius = "0.0"
MaxTargets = "100" // Max number of targets to hit. Chaining is off so the damage will be split between the number of targets
NoChaining = "0" // No chaining - all bolts coming from the attacker

//OrdnanceSound = "com_weap_launcher_energy_dumbfire"

Damage = "0" // This is the min damage. Even if the initial damage is split between the number of targets, it will never go below this number for each target
MaxDamage = "0" // This is the max damage
JumpDeduction = "0" // No jump deduction. This is for chaining only
DamageThreshold = "0" // Always do damage (no threshold)
MaxJumpDistance = "1000" // No max jump distance because the chaining is off

StunTime = "100000"
StunAnimation = ""

VehicleScale = "1.0"
ShieldScale = "1.0"
PersonScale = "1.0"
AnimalScale = "1.0"
DroidScale = "1.0"
BuildingScale = "1.0"

SmolderEffectTimer = "1000.0"

SmolderEffect = "chargeball"
SmolderBone = "bone_ribcage"

SmolderEffect = "chargeball"
SmolderBone = "bone_pelvis"

Push = "-1000.0"
LightningEffect = "com_sfx_lightningred"
LightningEffectScale = "1.0"
NoTargetLightningEffectCount = "25" // The number of ligthning effects to display when the ordinance has no targets to hit
NoTargetLightningEffectRandomSpread = "5.0" // The random rotation spread the ligthning effects does when the ordinance has no targets to hit
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: stunning weapon

Post by Fiodis »

I don't think stunning works - I remember something about it being broken. Most mods, certaintly, with "stun nades" accomplish that by just knocking the units over briefly; if there were a better way I'm sure they would've used it.
User avatar
Dakota
Field Commander
Field Commander
Posts: 991
Joined: Mon Dec 06, 2010 8:21 pm
Projects :: making random weapon assets
Games I'm Playing :: SWBF2 and more
xbox live or psn: PS3 beats xbox
Location: at a computer desk floating around in space

Re: Stunning weapon

Post by Dakota »

hmm, i actually did see someone do this before. it was in the map "DMI/Dynamic Map Idea" by repsharpshooter. the jedi had a force move that could stun another unit and just hold them in place for about a minute even when the jedi walks away. i know its been done at least once but i wonder how he did it.
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Stunning weapon

Post by Maveritchell »

Dakota wrote:hmm, i actually did see someone do this before. it was in the map "DMI/Dynamic Map Idea" by repsharpshooter. the jedi had a force move that could stun another unit and just hold them in place for about a minute even when the jedi walks away. i know its been done at least once but i wonder how he did it.
You're talking about a scripted weapon, which can do any number of things. What you saw in DMI was just a choke weapon.
User avatar
Dakota
Field Commander
Field Commander
Posts: 991
Joined: Mon Dec 06, 2010 8:21 pm
Projects :: making random weapon assets
Games I'm Playing :: SWBF2 and more
xbox live or psn: PS3 beats xbox
Location: at a computer desk floating around in space

Re: Stunning weapon

Post by Dakota »

oh, so thats what its called :shock: but i still need to know how to make one.
THEWULFMAN
Space Ranger
Posts: 5557
Joined: Tue Aug 17, 2010 3:30 pm
Projects :: Evolved 2
Location: Columbus, Ohio
Contact:

Re: Stunning weapon

Post by THEWULFMAN »

Dakota wrote:oh, so thats what its called :shock: but i still need to know how to make one.

Code: Select all

--ADD THIS AFTER THE ScriptCB_DoFile SECTION
count = 0
--END


Code: Select all

-- ADD THIS IN THE ScriptPostLoad SECTION

   OnObjectDamage(
         function(object, damager)
		 if GetObjectHealth(object) > 900000 then return end
               if GetObjectLastHitWeaponClass(object)  == "cis_weap_inf_stun_grenade" then
					FreezeFor(object,2)
               end 
          end
          )
--END

Code: Select all


--ADD THIS AFTER THE ScriptPostLoad SECTION
function FreezeFor(object, timercount)
   --Freeze
    print("--Freeze")
   health = GetObjectHealth(object)
   SetProperty(object, "CurHealth", 1000000)
   DeactivateObject(object)
   -- Wait for timercount
    print("-- Wait for timercount")
   CreateTimer("timer" .. count)
   SetTimerValue("timer" .. count, timercount)
   StartTimer("timer" .. count)
   OnTimerElapse(
   function(timer)
      --Unfreeze
	   print("--Unfreeze")
      ActivateObject(object)
      SetProperty(object, "CurHealth", (GetObjectHealth(object) - 1000000) + health)
	  count = count + 1
   end,
   "timer" .. count
   )
end
--END
User avatar
DarthD.U.C.K.
Master of the Force
Master of the Force
Posts: 6027
Joined: Wed Sep 27, 2006 11:05 am
Location: Duckburg, Germany

Re: Stunning weapon

Post by DarthD.U.C.K. »

master saiteks forcefreeze, isnt it?
here is the older version of it, without lua-code:
Hidden/Spoiler:
[WeaponClass]

ClassLabel = "areaeffectweapon"

[Properties]
HUDTag = "hud_force_push"
GeometryName = ""
HighResGeometry = ""
//MuzzleFlash = "med_muzzle_flash"
FlashColor = "80 80 255 255"
FlashLength = 0.025
FlashLightColor = "220 220 255 175"
Discharge = "med_smoke_effect"

//RoundsPerClip = "32"
RoundsPerClip = "0"
ReloadTime = "0.0"

HeatPerShot = "0.0" // only allow player to fire every 5 seconds
HeatRecoverRate = "0.2"
HeatThreshold = "0.01"

DisplayRefire = "0"

EnergyDrain = "40.0"
EnergyDrainRate = "15.0"
FireType = "Hold"
InitialSalvoDelay = "0.5"
//ChargeMaxTime = "0.0"
//ChargeMinStrength = "0.0"
MaxTargets = "1"
AreaType = "Ray"
AreaRange = "10.0"
AreaRadius = "10.0" // -> 20 degree arc
AreaHeight = "4.0"
EffectDamage = "0.0"
EffectType = "Choke"
EffectStrength = "10.0"
EffectFalloff = "1.0"
ThrustFactor = "0.5" // when firing, move at half speed
// I don't think this is used in the code at all -> TargetLock = "1" // when firing, activate target lock
SoldierAnimation = "idle_emote_full"

OffhandWeapon = 1
InstantPlayFireAnim = 1
TriggerSingle = "1" // if FireType = "Hold" this will work correctly now - Mike Z

LockOnRange = "64.0"
LockTime = "0.0"
AutoAimSize = "2.0"

TargetEnemy = "1"
TargetNeutral = "0"
TargetFriendly = "0"

TargetPerson = "1"
TargetAnimal = "1"
TargetDroid = "1"
TargetVehicle = "0"
TargetBuilding = "0"

ChargeRateLight = "1.0"
MaxChargeStrengthLight = "1.0"
ChargeDelayLight = "0.0"
ChargeRateHeavy = "1.0"
MaxChargeStrengthHeavy = "0.5"
ChargeDelayHeavy = "2.2"

RecoilLengthHeavy = "0.25"
RecoilStrengthHeavy = "2"
RecoilDecayHeavy = "0.0"

FireSound = "force_choke_fire"
//ReloadSound = ""
WeaponChangeSound = ""
ChangeModeSound = ""
FireEmptySound = ""
ChargeSound = ""
ChargeSoundPitch = "0.05"
OverheatSound = ""
OverheatSoundPitch = "0.5"
OverheatStopSound = ""
im not sure in which ways its is worse
THEWULFMAN
Space Ranger
Posts: 5557
Joined: Tue Aug 17, 2010 3:30 pm
Projects :: Evolved 2
Location: Columbus, Ohio
Contact:

Re: Stunning weapon

Post by THEWULFMAN »

Ah, Master Saitek came up with that, no readme for me to give him credits, he never has readmes with credits XD.

Well, using the lua code version you can hit someone with a weapon and you can still move, while with the old version you cant move since your force choking with 0 damage.
User avatar
skelltor
Sith
Sith
Posts: 1431
Joined: Fri Dec 11, 2009 6:24 pm
Projects :: BFSM
Games I'm Playing :: SWBFII
xbox live or psn: skelltor95
Location: minisnowta
Contact:

Re: Stunning weapon

Post by skelltor »

Change this ThrustFactor = "0.5" to 1 and you can move at mormal speed but you still have to hold down the button.
User avatar
Dakota
Field Commander
Field Commander
Posts: 991
Joined: Mon Dec 06, 2010 8:21 pm
Projects :: making random weapon assets
Games I'm Playing :: SWBF2 and more
xbox live or psn: PS3 beats xbox
Location: at a computer desk floating around in space

Re: Stunning weapon

Post by Dakota »

thanks, i will go try the one that requires lua (since i need to beable to move around >.>)

its actually munging right now and when i finish this mod up i am going to add some more people into the credits. :D

EDIT: ok i was just working with it and got the question: does having push on the weapon cause failure of it to stun?

also i was just wondering if i can have more than one weapon like this in the lua? because i could make a stun gun and a stun force power.

EDIT2: i see why its not working i got a munge error

here is the error
Hidden/Spoiler:
C:\BF2_ModTools\ToolsFL\Bin\luac.exe: ..\..\common\scripts\WSM\WSMc_con.lua:20: `)' expected near `('
ERROR[scriptmunge scripts\WSM\WSMc_con.lua]:Could not read input file.ERROR[scriptmunge scripts\WSM\WSMc_con.lua]:Could not read input file. [continuing]
2 Errors 0 Warnings

ERROR[levelpack mission\WSMc_con.req]:Expecting bracket, but none was found.
File : munged\pc\wsmc_con.script.req(1)...

ucft <--
ERROR[levelpack mission\WSMc_con.req]:Expecting bracket, but none was found.
File : munged\pc\wsmc_con.script.req(1)...

ucft <--

2 Errors 0 Warnings
here is my LUA (probably needed to see it)
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

-- load the gametype script
ScriptCB_DoFile("ObjectiveConquest")
ScriptCB_DoFile("setup_teams")

count = 0


-- REP Attacking (attacker is always #1)
REP = 1;
CIS = 2;
-- These variables do not change
ATT = REP;
DEF = CIS;


function ScriptPostLoad(
OnObjectDamage(
function(object, damager)
if GetObjectHealth(object) > 900000 then return end
if GetObjectLastHitWeaponClass(object) == "com_weap_inf_force_zap" then
FreezeFor(object,1000000)
end
end
)
)

function FreezeFor(object, timercount)
--Freeze
print("--Freeze")
health = GetObjectHealth(object)
SetProperty(object, "CurHealth", 1000000)
DeactivateObject(object)
-- Wait for timercount
print("-- Wait for timercount")
CreateTimer("timer" .. count)
SetTimerValue("timer" .. count, timercount)
StartTimer("timer" .. count)
OnTimerElapse(
function(timer)
--Unfreeze
print("--Unfreeze")
ActivateObject(object)
SetProperty(object, "CurHealth", (GetObjectHealth(object) - 1000000) + health)
count = count + 1
end,
"timer" .. count
)

end



--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}
cp4 = CommandPost:New{name = "cp4"}



--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)

conquest:Start()

EnableSPHeroRules()

end


---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptInit()

ReadDataFile("ingame.lvl")


SetMaxFlyHeight(30)
SetMaxPlayerFlyHeight (30)

SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",50) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",650) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",550) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",6000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

ReadDataFile("sound\\yav.lvl;yav1cw")
ReadDataFile("dc:SIDE\\rep.lvl",
"rep_inf_ep3_rifleman",
"rep_inf_ep3_rocketeer",
"rep_inf_ep3_engineer",
"rep_inf_ep3_sniper",
"rep_inf_ep3_officer",
"rep_inf_ep3_jettrooper",
"rep_hover_fightertank",
"rep_hero_anakin",
"rep_hover_barcspeeder")
ReadDataFile("dc:SIDE\\cis.lvl",
"cis_inf_rifleman",
"cis_inf_rocketeer",
"cis_inf_engineer",
"cis_inf_sniper",
"cis_inf_officer",
"cis_inf_droideka",
"cis_hero_darthmaul",
"cis_hover_aat")


ReadDataFile("dc:SIDE\\tur.lvl",
"tur_bldg_laser",
"tur_bldg_tower")

SetupTeams{
rep = {
team = REP,
units = 20,
reinforcements = 150,
soldier = { "rep_inf_ep3_rifleman",9, 25},
assault = { "rep_inf_ep3_rocketeer",1, 4},
engineer = { "rep_inf_ep3_engineer",1, 4},
sniper = { "rep_inf_ep3_sniper",1, 4},
officer = {"rep_inf_ep3_officer",1, 4},
special = { "rep_inf_ep3_jettrooper",1, 4},

},
cis = {
team = CIS,
units = 20,
reinforcements = 150,
soldier = { "cis_inf_rifleman",9, 25},
assault = { "cis_inf_rocketeer",1, 4},
engineer = { "cis_inf_engineer",1, 4},
sniper = { "cis_inf_sniper",1, 4},
officer = {"cis_inf_officer",1, 4},
special = { "cis_hero_darthmaul",0, 4},
}
}

SetHeroClass(CIS, "cis_hero_darthmaul")
SetHeroClass(REP, "rep_hero_anakin")


-- Level Stats
-- ClearWalkers()
AddWalkerType(0, 4) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)
local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 32)
SetMemoryPoolSize("Navigator", 128)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 128)
SetMemoryPoolSize("UnitController", 128)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(10.0, 0.25)
--ReadDataFile("dc:WSM\\WSM.lvl", "WSM_conquest")
ReadDataFile("dc:WSM\\WSM.lvl", "WSM_conquest")
SetDenseEnvironment("false")




-- Sound

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")

voiceSlow = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "rep_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "cis_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\global.lvl", "cw_music")
-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1")
OpenAudioStream("sound\\yav.lvl", "yav1_emt")

SetBleedingVoiceOver(REP, REP, "rep_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(REP, CIS, "rep_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, REP, "cis_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(CIS, CIS, "cis_off_com_report_us_overwhelmed", 1)

SetOutOfBoundsVoiceOver(2, "cisleaving")
SetOutOfBoundsVoiceOver(1, "repleaving")

SetAmbientMusic(REP, 1.0, "rep_yav_amb_start", 0,1)
SetAmbientMusic(REP, 0.8, "rep_yav_amb_middle", 1,1)
SetAmbientMusic(REP, 0.2, "rep_yav_amb_end", 2,1)
SetAmbientMusic(CIS, 1.0, "cis_yav_amb_start", 0,1)
SetAmbientMusic(CIS, 0.8, "cis_yav_amb_middle", 1,1)
SetAmbientMusic(CIS, 0.2, "cis_yav_amb_end", 2,1)

SetVictoryMusic(REP, "rep_yav_amb_victory")
SetDefeatMusic (REP, "rep_yav_amb_defeat")
SetVictoryMusic(CIS, "cis_yav_amb_victory")
SetDefeatMusic (CIS, "cis_yav_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("BirdScatter", "birdsFlySeq1")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")


--OpeningSateliteShot
AddCameraShot(0.908386, -0.209095, -0.352873, -0.081226, -45.922508, -19.114113, 77.022636);

AddCameraShot(-0.481173, 0.024248, -0.875181, -0.044103, 14.767292, -30.602322, -144.506851);
AddCameraShot(0.999914, -0.012495, -0.004416, -0.000055, 1.143253, -33.602314, -76.884430);
AddCameraShot(0.839161, 0.012048, -0.543698, 0.007806, 19.152437, -49.802273, 24.337317);
AddCameraShot(0.467324, 0.006709, -0.883972, 0.012691, 11.825212, -49.802273, -7.000720);
AddCameraShot(0.861797, 0.001786, -0.507253, 0.001051, -11.986043, -59.702248, 23.263165);
AddCameraShot(0.628546, -0.042609, -0.774831, -0.052525, 20.429928, -48.302277, 9.771714);
AddCameraShot(0.765213, -0.051873, 0.640215, 0.043400, 57.692474, -48.302277, 16.540724);
AddCameraShot(0.264032, -0.015285, -0.962782, -0.055734, -16.681797, -42.902290, 129.553268);
AddCameraShot(-0.382320, 0.022132, -0.922222, -0.053386, 20.670977, -42.902290, 135.513001);
end
Post Reply