<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fweapons%2Fhyperblaster.script</id>
	<title>Script:Files:script/weapons/hyperblaster.script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.splashdamage.com/index.php?action=history&amp;feed=atom&amp;title=Script%3AFiles%3Ascript%2Fweapons%2Fhyperblaster.script"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/weapons/hyperblaster.script&amp;action=history"/>
	<updated>2026-04-07T12:21:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Script:Files:script/weapons/hyperblaster.script&amp;diff=1768&amp;oldid=prev</id>
		<title>Wizz at 18:10, 2 November 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Script:Files:script/weapons/hyperblaster.script&amp;diff=1768&amp;oldid=prev"/>
		<updated>2007-11-02T18:10:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;/***********************************************************************&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;weapon_hyperblaster.script&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;***********************************************************************/&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]] : [[ScriptClass:weapon_clip|weapon_clip]] {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        preinit();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        destroy();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        Raise();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        Lower();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        Reload() { Overheat(); }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        SpinThread();&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        CanFire();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        OnIronSightsEnabled() { [[ScriptEvent:hide|hide]](); }&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt;        OnIronSightsDisabled() { [[ScriptEvent:show|show]](); }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;        spinSpeed;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt;        spinSpeedFire;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt;        spinThreadActive;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::preinit() {&lt;br /&gt;
     hasScope        = false;&lt;br /&gt;
     hasIronSights    = true;&lt;br /&gt;
     hasEndFireAnim    = true;&lt;br /&gt;
     hasHeat            = true;&lt;br /&gt;
     usesStroyent    = true;&lt;br /&gt;
 &lt;br /&gt;
     spinSpeedFire    = [[ScriptEvent:getFloatKeyWithDefault|getFloatKeyWithDefault]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;spin_fire&amp;quot;&amp;lt;/span&amp;gt;, 360.f );&lt;br /&gt;
     spinSpeed        = 0;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; SpinThread();&lt;br /&gt;
     spinThreadActive = true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::destroy() {&lt;br /&gt;
     [[ScriptEvent:stopSound|stopSound]]( SND_WEAPON_FIRE2 );&lt;br /&gt;
     [[ScriptEvent:stopSound|stopSound]]( SND_WEAPON_FIRE3 );&lt;br /&gt;
     sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;SpinThread_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::Raise() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( hasHeat &amp;amp;&amp;amp; ShouldRunGuis() ) {&lt;br /&gt;
         CreateUpdateHeat();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( !spinThreadActive ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;thread&amp;lt;/span&amp;gt; SpinThread();&lt;br /&gt;
         spinThreadActive = true;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     Base_Raise();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::Lower() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( ShouldRunGuis() ) {&lt;br /&gt;
         KillUpdateHeat();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( spinThreadActive ) {&lt;br /&gt;
         spinSpeed = 0;&lt;br /&gt;
         [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE2, -60.0f, 0.2f );&lt;br /&gt;
         [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE3, -60.0f, 0.2f );&lt;br /&gt;
         sys.[[ScriptEvent:killThread|killThread]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;SpinThread_&amp;quot;&amp;lt;/span&amp;gt; + [[ScriptEvent:getName|getName]]() );&lt;br /&gt;
         spinThreadActive = false;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     Cleanup();&lt;br /&gt;
     Base_Lower();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;boolean&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::CanFire() {&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( spinSpeed &amp;lt; spinSpeedFire ) {&lt;br /&gt;
         dryfireAttack = true;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; false;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     dryfireAttack = false;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;return&amp;lt;/span&amp;gt; true;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;void&amp;lt;/span&amp;gt; [[ScriptClass:weapon_hyperblaster|weapon_hyperblaster]]::SpinThread() {&lt;br /&gt;
     sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinUpTime    = 0.2f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinDownTime    = 1.6f;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinUpAccel    = spinSpeedFire / spinUpTime;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; spinDownAccel    = spinSpeedFire / spinDownTime;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;vector&amp;lt;/span&amp;gt; angle = g_vectorZero;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; basePitch        = 0.5f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; maxPitch        = 1.0f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pitchRange    = maxPitch - basePitch;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; basePitchLow    = 0.25f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; maxPitchLow    = 1.0f;&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pitchRangeLow    = maxPitchLow - basePitchLow;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;object&amp;lt;/span&amp;gt; worldModel        = [[ScriptEvent:getWorldModel|getWorldModel]]( 0 );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; jointBarrel        = [[ScriptEvent:getJointHandle|getJointHandle]]( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_barrel&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; jointBarrelWorld    = worldModel.[[ScriptEvent:getJointHandle|getJointHandle]]( [[ScriptEvent:getKey|getKey]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;joint_barrel_world&amp;quot;&amp;lt;/span&amp;gt; ) );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_barrel_loop&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE2 );&lt;br /&gt;
     [[ScriptEvent:startSound|startSound]]( &amp;lt;span style=&amp;quot;color:brown&amp;quot;&amp;gt;&amp;quot;snd_barrel_loop_low&amp;quot;&amp;lt;/span&amp;gt;, SND_WEAPON_FIRE3 );&lt;br /&gt;
 &lt;br /&gt;
     [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE2, -60.0f, 0.0f );&lt;br /&gt;
     [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE3, -60.0f, 0.0f );&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; ( true ) {&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; frameTime = sys.[[ScriptEvent:getFrameTime|getFrameTime]]();&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; oldSpinSpeed = spinSpeed;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( WEAPON_ATTACK &amp;amp;&amp;amp; !IsOverheated() ) {&lt;br /&gt;
             spinSpeed = spinSpeed + spinUpAccel * frameTime;&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             spinSpeed = spinSpeed - spinDownAccel * frameTime;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         CLAMP( spinSpeed, 0.0f, spinSpeedFire );&lt;br /&gt;
 &lt;br /&gt;
         spinSpeed = spinSpeed * 0.7f + oldSpinSpeed * 0.3f;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( spinSpeed &amp;lt; 0.0001f ) {&lt;br /&gt;
             spinSpeed = 0.f;&lt;br /&gt;
         }&lt;br /&gt;
         angle_z += spinSpeed * frameTime;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( angle_z &amp;gt; 360.0f ) {&lt;br /&gt;
             angle_z -= 360.0f;&lt;br /&gt;
         }&lt;br /&gt;
         [[ScriptEvent:setJointAngle|setJointAngle]]( jointBarrel, JOINTMOD_LOCAL, angle );&lt;br /&gt;
         worldModel.[[ScriptEvent:setJointAngle|setJointAngle]]( jointBarrelWorld, JOINTMOD_LOCAL, -angle );&lt;br /&gt;
 &lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; fraction = ( spinSpeed / spinSpeedFire );&lt;br /&gt;
         fraction = fraction * fraction * fraction * fraction;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt; ( fraction &amp;lt; 0.0001f ) {&lt;br /&gt;
             fraction = 0.f;&lt;br /&gt;
 &lt;br /&gt;
             [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE2, -60.0f, 1.0f );&lt;br /&gt;
             [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE3, -60.0f, 1.0f );&lt;br /&gt;
         } &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;else&amp;lt;/span&amp;gt; {&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pitch = fraction * pitchRange + basePitch;&lt;br /&gt;
             [[ScriptEvent:setChannelPitchShift|setChannelPitchShift]]( SND_WEAPON_FIRE2, pitch );&lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; pitchLow = fraction * pitchRangeLow + basePitchLow;&lt;br /&gt;
             [[ScriptEvent:setChannelPitchShift|setChannelPitchShift]]( SND_WEAPON_FIRE3, pitch );&lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; volume = sys.[[ScriptEvent:sqrt|sqrt]]( sys.[[ScriptEvent:sin|sin]]( fraction * 90 ) ) * 20.0f - 20.0f;&lt;br /&gt;
             [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE2, volume, 0.0f );&lt;br /&gt;
 &lt;br /&gt;
             &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;float&amp;lt;/span&amp;gt; volumeLow = sys.[[ScriptEvent:sqrt|sqrt]]( sys.[[ScriptEvent:sin|sin]]( ( 1.0f - fraction ) * 90 ) ) * 5.0f - 5.0f;&lt;br /&gt;
             [[ScriptEvent:fadeSound|fadeSound]]( SND_WEAPON_FIRE3, volumeLow, 0.0f );&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         sys.[[ScriptEvent:waitFrame|waitFrame]]();&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Wizz</name></author>
		
	</entry>
</feed>