share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua
changeset 11968 1de4d6b35748
parent 11967 7dd85fe00de3
child 11969 7718ebf8cf14
equal deleted inserted replaced
11967:7dd85fe00de3 11968:1de4d6b35748
     1 HedgewarsScriptLoad("/Scripts/Locale.lua")
       
     2 
       
     3 local hhs = {}
       
     4 local missionWon = nil
       
     5 local endTimer = 1000
       
     6 local hogsKilled = 0
       
     7 local finishTime
       
     8 
       
     9 local HogData =	{
       
    10 					{"Bufon", 			"ShaggyYeti",false},
       
    11 					{"burp", 			"lambda",false},
       
    12 					{"Blue", 			"cap_blue",false},
       
    13 					{"bender", 			"NoHat",false},
       
    14 					{"Castell",			"NoHat",false},
       
    15 					{"cekoto", 			"NoHat",false},
       
    16 					{"CheezeMonkey",	"NoHat",false},
       
    17 					{"claymore", 		"NoHat",false},
       
    18 					{"CIA-144", 		"cyborg1",false},
       
    19 					{"doomy ", 			"NoHat",false},
       
    20 					{"Falkenauge", 		"NoHat",false},
       
    21 					{"FadeOne", 		"NoHat",false},
       
    22 					{"hayaa", 			"NoHat",false},
       
    23 					{"Hermes", 			"laurel",false},
       
    24 					{"HedgeKing",		"NoHat",false},
       
    25 					{"Izack1535", 		"NoHat",false},
       
    26 					{"Kiofspa", 		"NoHat",false},
       
    27 					{"Komplex", 		"NoHat",false},
       
    28 					{"koda", 			"poke_mudkip",false},
       
    29 					{"Lalo", 			"NoHat",false},
       
    30 					{"Logan", 			"NoHat",false},
       
    31 					{"lollkiller", 		"NoHat",false},
       
    32 					{"Luelle", 			"NoHat",false},
       
    33 					{"mikade", 			"Skull",false},
       
    34 					{"Mushi", 			"sm_daisy",false},
       
    35 					{"Naboo", 			"NoHat",false},
       
    36 					{"nemo", 			"bb_bub",false},
       
    37 					{"practice", 		"NoHat",false},
       
    38 					{"Prof. Panic",  	"NoHat",false},
       
    39 					{"Randy",			"zoo_Sheep",false},
       
    40 					{"rhino", 			"NinjaTriangle",false},
       
    41 					{"Radissthor",  	"NoHat",false},
       
    42 					{"Sami",			"sm_peach",false},
       
    43 					{"soreau", 			"NoHat",false},
       
    44 					{"sdw195", 			"NoHat",false},
       
    45 					{"sphrix", 			"TeamTopHat",false},
       
    46 					{"sheepluva",		"zoo_Sheep",false},
       
    47 					{"Smaxx", 			"NoHat",false},
       
    48 					{"shadowzero", 		"NoHat",false},
       
    49 					{"Star and Moon",	"SparkleSuperFun",false},
       
    50 					{"The 24",			"NoHat",false},
       
    51 					{"TLD",				"NoHat",false},
       
    52 					{"Tiyuri", 			"sf_ryu",false},
       
    53 					{"unC0Rr", 			"cyborg1",false},
       
    54 					{"Waldsau", 		"cyborg1",false},
       
    55 					{"wolfmarc", 		"knight",false},
       
    56 					{"Xeli", 			"android",false}
       
    57 
       
    58 				}
       
    59 
       
    60 function GenericEnd()
       
    61 	EndGame()
       
    62 end
       
    63 
       
    64 function GameOverMan()
       
    65 	missionWon = false
       
    66 	ShowMission(loc("Rope-knocking Challenge"), loc("Challenge over!"), loc("Oh no! Just try again!"), -amSkip, 0)
       
    67 	SendStat(siGameResult, loc("Challenge over!"))
       
    68 	local score = math.ceil((hogsKilled / 16)*6000)
       
    69 	SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, score))
       
    70 	SendStat(siPointType, "points")
       
    71 	SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta"))
       
    72 	PlaySound(sndHellish)
       
    73 end
       
    74 
       
    75 function GG()
       
    76 	missionWon = true
       
    77 	local completeTime = (TurnTime - finishTime) / 1000
       
    78 	ShowMission(loc("Rope-knocking Challenge"), loc("Challenge completed!"), loc("Congratulations!") .. "|" .. string.format(loc("Completion time: %.2fs"), completeTime), 0, 0)
       
    79 	PlaySound(sndHomerun)
       
    80 	SendStat(siGameResult, loc("Challenge completed!"))
       
    81 	local hogScore = math.ceil((hogsKilled / 16)*6000)
       
    82 	local timeScore = math.ceil((finishTime/TurnTime)*6000)
       
    83 	local score = hogScore + timeScore
       
    84 	SendStat(siCustomAchievement, string.format(loc("You have killed %d of 16 hedgehogs (+%d points)."), hogsKilled, hogScore))
       
    85 	SendStat(siCustomAchievement, string.format(loc("You have completed this challenge in %.2f s (+%d points)."), completeTime, timeScore))
       
    86 	SendStat(siPointType, "points")
       
    87 	SendStat(siPlayerKills, tostring(score), loc("Wannabe Shoppsta"))
       
    88 end
       
    89 
       
    90 function AssignCharacter(p)
       
    91 
       
    92 	done = false
       
    93 	sanityCheck = 0
       
    94 
       
    95 	while(done == false) do
       
    96 
       
    97 		i = 1+ GetRandom(#HogData)
       
    98 		if HogData[i][3] == false then
       
    99 			HogData[i][3] = true
       
   100 			done = true
       
   101 			SetHogName(hhs[p], HogData[i][1])
       
   102 			SetHogHat(hhs[p], HogData[i][2])
       
   103 		elseif HogData[i][3] == true then
       
   104 			sanityCheck = sanityCheck +1
       
   105 			if sanityCheck == 100 then
       
   106 				done = true
       
   107 				SetHogName(hhs[p], "Newbie")
       
   108 				SetHogHat(hhs[p], "NoHat")
       
   109 			end
       
   110 		end
       
   111 
       
   112 	end
       
   113 
       
   114 end
       
   115 
       
   116 function onGameInit()
       
   117 
       
   118 	--Seed = 1
       
   119 	GameFlags = gfBorder + gfSolidLand
       
   120 
       
   121 	TurnTime = 180 * 1000
       
   122 	Delay = 500
       
   123 	Map = "Ropes"
       
   124 	Theme = "Eyes"
       
   125 
       
   126 	CaseFreq = 0
       
   127 	MinesNum = 0
       
   128 	Explosives = 0
       
   129 
       
   130 	AddTeam(loc("Wannabe Shoppsta"), 0x11F12B, "Simple", "Island", "Default", "cm_shoppa")
       
   131 	hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask")
       
   132 	SetGearPosition(player, 1380, 1500)
       
   133 
       
   134 	AddTeam(loc("Unsuspecting Louts"), 0xDD0000, "Simple", "Island", "Default", "cm_face")
       
   135 	for i = 1, 8 do
       
   136 		hhs[i] = AddHog("generic", 0, 1, "NoHat")
       
   137 	end
       
   138 
       
   139 	AddTeam(loc("Unlucky Sods"), 0xDD0000, "Simple", "Island", "Default", "cm_balrog")
       
   140 	for i = 9, 16 do
       
   141 		hhs[i] = AddHog("generic", 0, 1, "NoHat")
       
   142 	end
       
   143 
       
   144 end
       
   145 
       
   146 
       
   147 
       
   148 function onGameStart()
       
   149 	SendHealthStatsOff()
       
   150 
       
   151 	ShowMission     (
       
   152                         loc("Rope-knocking Challenge"),
       
   153                         loc("Challenge"),
       
   154                         loc("Use the rope to knock your enemies to their doom.") .. "|" ..
       
   155                         loc("Finish this challenge as fast as possible to earn bonus points."),
       
   156                         -amRope, 4000)
       
   157 
       
   158 	PlaceGirder(46,1783, 0)
       
   159 
       
   160 	SetGearPosition(hhs[0], 2419, 1769)
       
   161 	SetGearPosition(hhs[1], 3350, 570)
       
   162 	SetGearPosition(hhs[2], 3039, 1300)
       
   163 	SetGearPosition(hhs[3], 2909, 430)
       
   164 	SetGearPosition(hhs[4], 2150, 879)
       
   165 	SetGearPosition(hhs[5], 1735, 1136)
       
   166 	SetGearPosition(hhs[6], 1563, 553)
       
   167 	SetGearPosition(hhs[7], 679, 859)
       
   168 	SetGearPosition(hhs[8], 1034, 251)
       
   169 	SetGearPosition(hhs[9], 255, 67)
       
   170 	SetGearPosition(hhs[10], 2671, 7)
       
   171 	SetGearPosition(hhs[11], 2929, 244)
       
   172 	SetGearPosition(hhs[12], 1946, 221)
       
   173 	SetGearPosition(hhs[13], 3849, 1067)
       
   174 	SetGearPosition(hhs[14], 3360, 659)
       
   175 	SetGearPosition(hhs[15], 3885, 285)
       
   176 	SetGearPosition(hhs[16], 935, 1160)
       
   177 
       
   178 	for i = 1, 16 do
       
   179 		AssignCharacter(i)
       
   180 	end
       
   181 
       
   182 end
       
   183 
       
   184 function onGameTick()
       
   185 
       
   186 	if (TurnTimeLeft == 1) and (missionWon == nil) then
       
   187 		GameOverMan()
       
   188 	end
       
   189 
       
   190 	if missionWon ~= nil then
       
   191 
       
   192 		endTimer = endTimer - 1
       
   193 		if endTimer == 1 then
       
   194 			GenericEnd()
       
   195 		end
       
   196 
       
   197 		if missionWon == true then
       
   198 			AddCaption(loc("Victory!"), 0xFFFFFFFF,capgrpGameState)
       
   199 		else
       
   200 			AddCaption(loc("Challenge over!"), 0xFFFFFFFF,capgrpGameState)
       
   201 		end
       
   202 
       
   203 	end
       
   204 
       
   205 end
       
   206 
       
   207 function onGearDamage(gear, damage)
       
   208 
       
   209 	if gear ~= hhs[0] and GetGearType(gear) == gtHedgehog then
       
   210 
       
   211 		AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
       
   212 		DeleteGear(gear)
       
   213 		PlaySound(sndExplosion)
       
   214 		AddCaption(string.format(knockTaunt(), GetHogName(gear)), 0xFFFFFFFF, capgrpMessage)
       
   215 
       
   216 		hogsKilled = hogsKilled +1
       
   217 		if hogsKilled == 15 then
       
   218 			PlaySound(sndRideOfTheValkyries)
       
   219 		elseif hogsKilled == 16 then
       
   220 			finishTime = TurnTimeLeft
       
   221 			GG()
       
   222 		end
       
   223 
       
   224 	end
       
   225 
       
   226 end
       
   227 
       
   228 function knockTaunt()
       
   229 	local r = math.random(0,23)
       
   230 	local taunt
       
   231 	if r == 0 then taunt =		loc("%s has been knocked out.")
       
   232 	elseif r == 1 then taunt =	loc("%s hit the ground.")
       
   233 	elseif r == 2 then taunt =	loc("%s splatted.")
       
   234 	elseif r == 3 then taunt =	loc("%s was smashed.")
       
   235 	elseif r == 4 then taunt =	loc("%s felt unstable.")
       
   236 	elseif r == 5 then taunt =	loc("%s exploded.")
       
   237 	elseif r == 6 then taunt =	loc("%s fell from a high cliff.")
       
   238 	elseif r == 7 then taunt =	loc("%s goes the way of the lemming.")
       
   239 	elseif r == 8 then taunt =	loc("%s was knocked away.")
       
   240 	elseif r == 9 then taunt =	loc("%s was really unlucky.")
       
   241 	elseif r == 10 then taunt =	loc("%s felt victim to rope-knocking.")
       
   242 	elseif r == 11 then taunt =	loc("%s had no chance.")
       
   243 	elseif r == 12 then taunt =	loc("%s was a good target.")
       
   244 	elseif r == 13 then taunt =	loc("%s spawned at a really bad position.")
       
   245 	elseif r == 14 then taunt =	loc("%s was doomed from the beginning.")
       
   246 	elseif r == 15 then taunt =	loc("%s has fallen victim to gravity.")
       
   247 	elseif r == 16 then taunt =	loc("%s hates Newton.")		-- Isaac Newton
       
   248 	elseif r == 17 then taunt =	loc("%s had it coming.")
       
   249 	elseif r == 18 then taunt =	loc("%s is eliminated!")
       
   250 	elseif r == 19 then taunt =	loc("%s fell too fast.")
       
   251 	elseif r == 20 then taunt =	loc("%s flew like a rock.")
       
   252 	elseif r == 21 then taunt =	loc("%s stumpled.")
       
   253 	elseif r == 22 then taunt =	loc("%s was shoved away.")
       
   254 	elseif r == 23 then taunt =	loc("%s didn't expect that.")
       
   255 	end
       
   256 	return taunt
       
   257 end
       
   258 
       
   259 function onGearDelete(gear)
       
   260 
       
   261 	if (gear == hhs[0]) and (missionWon == nil) then
       
   262 		GameOverMan()
       
   263 	end
       
   264 
       
   265 end
       
   266 
       
   267 function onAmmoStoreInit()
       
   268 	SetAmmo(amRope, 9, 0, 0, 0)
       
   269 end
       
   270 
       
   271 function onNewTurn()
       
   272  	SetWeapon(amRope)
       
   273 end