share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua
changeset 6349 b10715d6b986
child 6378 b812bfcfeb49
equal deleted inserted replaced
6347:27931e3ceff8 6349:b10715d6b986
       
     1 --------------------------------
       
     2 -- HIGHLANDER / HOGS OF WAR
       
     3 -- version 0.3
       
     4 -- by mikade
       
     5 --------------------------------
       
     6 
       
     7 -----------
       
     8 --0.1
       
     9 -----------
       
    10 
       
    11 -- concept test
       
    12 
       
    13 -----------
       
    14 --0.2
       
    15 -----------
       
    16 
       
    17 -- remove tardis till Henek fixes his tracker
       
    18 -- change wep crates to health crates
       
    19 -- reset arb turntimevalue
       
    20 -- include randomOrder
       
    21 -- Until fixed .17 methods come out, remove switches and resurrector
       
    22 -- on request, removed kamikaze and piano weapons
       
    23 -- provisional fixing of bugs that can't actually be fixed yet
       
    24 
       
    25 -----------
       
    26 --0.3
       
    27 -----------
       
    28 
       
    29 -- meh, update incorrect display
       
    30 -- may change this in the future to have switches
       
    31 -- but for now people are used to it without, so~
       
    32 
       
    33 -- mudball is now counted as a utility
       
    34 
       
    35 ----------------
       
    36 -- other ideas
       
    37 ----------------
       
    38 
       
    39 -- circles to mark hogs with more than 4 weapons
       
    40 -- health crate and switch drops
       
    41 -- hogs start with 1 weap and 1 utility each (some are rarer than others?)
       
    42 -- could always create a "donor card" mini circle instead of automatic disposal
       
    43 
       
    44 
       
    45 loadfile(GetDataPath() .. "Scripts/Locale.lua")()
       
    46 loadfile(GetDataPath() .. "Scripts/Tracker.lua")()
       
    47 
       
    48 local wepArray = {}
       
    49 local wepArrayCount = 0
       
    50 
       
    51 local atkArray = {}
       
    52 local atkCount = 0
       
    53 
       
    54 local utilArray = {}
       
    55 local utilArrayCount = 0
       
    56 
       
    57 local currName
       
    58 local lastName
       
    59 local started = false
       
    60 local switchStage = 0
       
    61 
       
    62 function StartingSetUp(gear)
       
    63 
       
    64 	for i = 0, (wepArrayCount-1) do
       
    65 		setGearValue(gear,wepArray[i],0)
       
    66 	end
       
    67 
       
    68 	i = GetRandom(atkArrayCount)
       
    69 	setGearValue(gear,atkArray[i],1)
       
    70 
       
    71 	i = GetRandom(utilArrayCount)
       
    72 	setGearValue(gear,utilArray[i],1)
       
    73 
       
    74 	SetHealth(gear, 100)
       
    75 
       
    76 end
       
    77 
       
    78 --[[function SaveWeapons(gear)
       
    79 
       
    80 	-
       
    81 	for i = 0, (wepArrayCount-1) do
       
    82 		setGearValue(gear, wepArray[i], GetAmmoCount(gear, wepArray[i]) )
       
    83 		 --AddAmmo(gear, wepArray[i], getGearValue(gear,wepArray[i]) )
       
    84 	end
       
    85 
       
    86 end]]
       
    87 
       
    88 function ConvertValues(gear)
       
    89 
       
    90 	for i = 0, (wepArrayCount-1) do
       
    91 		AddAmmo(gear, wepArray[i], getGearValue(gear,wepArray[i]) )
       
    92 	end
       
    93 
       
    94 
       
    95 end
       
    96 
       
    97 
       
    98 function TransferWeps(gear)
       
    99 
       
   100 	if CurrentHedgehog ~= nil then
       
   101 
       
   102 		for i = 0, (wepArrayCount-1) do
       
   103 			val = getGearValue(gear,wepArray[i])
       
   104 			if val ~= 0 then
       
   105 				setGearValue(CurrentHedgehog, wepArray[i], val)
       
   106 				AddAmmo(CurrentHedgehog, wepArray[i], val)
       
   107 			end
       
   108 		end
       
   109 
       
   110 	end
       
   111 
       
   112 end
       
   113 
       
   114 
       
   115 
       
   116 function onGameInit()
       
   117 	GameFlags = gfInfAttack + gfRandomOrder
       
   118 	HealthCaseProb = 100
       
   119 end
       
   120 
       
   121 function onGameStart()
       
   122 
       
   123 
       
   124 	ShowMission	(
       
   125 				loc("HIGHLANDER"),
       
   126 				loc("Not all hogs are born equal."),
       
   127 
       
   128 				"- " .. loc("Eliminate enemy hogs and take their weapons.") .. "|" ..
       
   129 				"- " .. loc("Per-Hog Ammo") .. "|" ..
       
   130 				"- " .. loc("Weapons reset.") .. "|" ..
       
   131 				"- " .. loc("Unlimited Attacks") .. "|" ..
       
   132 				"", 4, 4000
       
   133 				)
       
   134 
       
   135 	atkArray[0] = amBazooka
       
   136 	atkArray[1] = amBee
       
   137 	atkArray[2] = amMortar
       
   138 	atkArray[3] = amDrill
       
   139 	--atkArray[4] = amSnowball
       
   140 
       
   141 	atkArray[4] = amGrenade
       
   142 	atkArray[5] = amClusterBomb
       
   143 	atkArray[6] = amMolotov
       
   144 	atkArray[7] = amWatermelon
       
   145 	atkArray[8] = amHellishBomb
       
   146 	atkArray[9] = amGasBomb
       
   147 
       
   148 	atkArray[10] = amShotgun
       
   149 	atkArray[11] = amDEagle
       
   150 	atkArray[12] = amFlamethrower
       
   151 	atkArray[13] = amSniperRifle
       
   152 	atkArray[14] = amSineGun
       
   153 
       
   154 	atkArray[15] = amFirePunch
       
   155 	atkArray[16] = amWhip
       
   156 	atkArray[17] = amBaseballBat
       
   157 	--atkArray[19] = amKamikaze
       
   158 	atkArray[18] = amBirdy
       
   159 	atkArray[19] = amSeduction
       
   160 	atkArray[20] = amHammer
       
   161 
       
   162 	atkArray[21] = amMine
       
   163 	atkArray[22] = amDynamite
       
   164 	atkArray[23] = amCake
       
   165 	atkArray[24] = amBallgun
       
   166 	atkArray[25] = amRCPlane
       
   167 	atkArray[26] = amSMine
       
   168 
       
   169 	atkArray[27] = amAirAttack
       
   170 	atkArray[28] = amMineStrike
       
   171 	atkArray[29] = amDrillStrike
       
   172 	atkArray[30] = amNapalm
       
   173 	--atkArray[32] = amPiano
       
   174 	atkArray[31] = amLandGun
       
   175 
       
   176 	--atkArray[33] = amBirdy
       
   177 	--atkArray[34] = amLandGun
       
   178 
       
   179 	atkArrayCount = 32
       
   180 
       
   181 	-------------------------------
       
   182 
       
   183 
       
   184 	wepArray[0] = amBazooka
       
   185 	wepArray[1] = amBee
       
   186 	wepArray[2] = amMortar
       
   187 	wepArray[3] = amDrill
       
   188 	wepArray[4] = amSnowball
       
   189 
       
   190 	wepArray[5] = amGrenade
       
   191 	wepArray[6] = amClusterBomb
       
   192 	wepArray[7] = amMolotov
       
   193 	wepArray[8] = amWatermelon
       
   194 	wepArray[9] = amHellishBomb
       
   195 	wepArray[10] = amGasBomb
       
   196 
       
   197 	wepArray[11] = amShotgun
       
   198 	wepArray[12] = amDEagle
       
   199 	wepArray[13] = amFlamethrower
       
   200 	wepArray[14] = amSniperRifle
       
   201 	wepArray[15] = amSineGun
       
   202 
       
   203 	wepArray[16] = amFirePunch
       
   204 	wepArray[17] = amWhip
       
   205 	wepArray[18] = amBaseballBat
       
   206 	--wepArray[19] = amKamikaze
       
   207 	wepArray[19] = amExtraTime
       
   208 	wepArray[20] = amSeduction
       
   209 	wepArray[21] = amHammer
       
   210 
       
   211 	wepArray[22] = amMine
       
   212 	wepArray[23] = amDynamite
       
   213 	wepArray[24] = amCake
       
   214 	wepArray[25] = amBallgun
       
   215 	wepArray[26] = amRCPlane
       
   216 	wepArray[27] = amSMine
       
   217 
       
   218 	wepArray[28] = amAirAttack
       
   219 	wepArray[29] = amMineStrike
       
   220 	wepArray[30] = amDrillStrike
       
   221 	wepArray[31] = amNapalm
       
   222 	--wepArray[32] = amPiano
       
   223 	wepArray[32] = amExtraDamage
       
   224 
       
   225 	wepArray[33] = amBirdy
       
   226 	wepArray[34] = amLandGun
       
   227 
       
   228 	wepArray[35] = amBlowTorch
       
   229 	wepArray[36] = amPickHammer
       
   230 	wepArray[37] = amGirder
       
   231 	wepArray[38] = amPortalGun
       
   232 
       
   233 	wepArray[39] = amRope
       
   234 	wepArray[40] = amParachute
       
   235 	wepArray[41] = amTeleport
       
   236 	wepArray[42] = amJetpack
       
   237 
       
   238 	wepArray[43] = amInvulnerable
       
   239 	wepArray[44] = amLaserSight
       
   240 	wepArray[45] = amVampiric
       
   241 	----resurrector used to be here
       
   242 
       
   243 	wepArray[46] = amLowGravity
       
   244 
       
   245 	--wepArray[47] = amExtraDamage -- see 19
       
   246 	--wepArray[48] = amExtraTime	-- see 32
       
   247 
       
   248 	--wepArray[49] = amResurrector
       
   249 	--wepArray[50] = amTardis
       
   250 
       
   251 	wepArrayCount = 47
       
   252 
       
   253 	----------------------------
       
   254 
       
   255 	utilArray[0] = amBlowTorch
       
   256 	utilArray[1] = amPickHammer
       
   257 	utilArray[2] = amGirder
       
   258 	utilArray[3] = amPortalGun
       
   259 
       
   260 	utilArray[4] = amRope
       
   261 	utilArray[5] = amParachute
       
   262 	utilArray[6] = amTeleport
       
   263 	utilArray[7] = amJetpack
       
   264 
       
   265 	utilArray[8] = amInvulnerable
       
   266 	utilArray[9] = amLaserSight
       
   267 	utilArray[10] = amVampiric
       
   268 
       
   269 	utilArray[11] = amLowGravity
       
   270 	utilArray[12] = amExtraDamage
       
   271 	utilArray[13] = amExtraTime
       
   272 
       
   273 	utilArray[14] = amSnowball
       
   274 
       
   275 	--utilArray[14] = amResurrector
       
   276 	--utilArray[15] = amTardis
       
   277 
       
   278 	utilArrayCount = 15
       
   279 
       
   280 	runOnGears(StartingSetUp)
       
   281 	runOnGears(ConvertValues)
       
   282 
       
   283 
       
   284 end
       
   285 
       
   286 function onNewTurn()
       
   287 --
       
   288 end
       
   289 
       
   290 
       
   291 function onGameTick()
       
   292 
       
   293 	if (CurrentHedgehog ~= nil) then
       
   294 
       
   295 		currName = GetHogName(CurrentHedgehog)
       
   296 
       
   297 		if (currName ~= lastName) then
       
   298 			AddCaption(loc("Switched to ") .. currName .. "!")
       
   299 			ConvertValues(CurrentHedgehog)
       
   300 		end
       
   301 
       
   302 		lastName = currName
       
   303 	end
       
   304 
       
   305 end
       
   306 
       
   307 --[[function onHogHide(gear)
       
   308 	-- waiting for Henek
       
   309 end
       
   310 
       
   311 function onHogRestore(gear)
       
   312 	-- waiting for Henek
       
   313 end]]
       
   314 
       
   315 function onGearAdd(gear)
       
   316 
       
   317 	--if GetGearType(gear) == gtSwitcher then
       
   318 	--	SaveWeapons(CurrentHedgehog)
       
   319 	--end
       
   320 
       
   321 	if (GetGearType(gear) == gtHedgehog) then
       
   322 		trackGear(gear)
       
   323 	end
       
   324 
       
   325 end
       
   326 
       
   327 function onGearDelete(gear)
       
   328 
       
   329 	if (GetGearType(gear) == gtHedgehog) then --or (GetGearType(gear) == gtResurrector) then
       
   330 		TransferWeps(gear)
       
   331 		trackDeletion(gear)
       
   332 	end
       
   333 
       
   334 end
       
   335 
       
   336 function onAmmoStoreInit()
       
   337 	SetAmmo(amSkip, 9, 0, 0, 0)
       
   338 	--SetAmmo(amSwitch, 9, 0, 0, 0) -------1
       
   339 end
       
   340