# HG changeset patch # User mikade # Date 1315951586 -7200 # Node ID 86c59c34cdd5ae23682cdc06b45d476eff721980 # Parent 368669bf6cb31b9e669d00f05ee4a9869cf6e9dc Balanced shield miser, multi-shot, and boss kills in SI. Added radar ping. Make Racer less prone to fail. <- Please test. diff -r 368669bf6cb3 -r 86c59c34cdd5 share/hedgewars/Data/Scripts/Multiplayer/Racer.cfg --- a/share/hedgewars/Data/Scripts/Multiplayer/Racer.cfg Tue Sep 13 17:49:39 2011 -0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Racer.cfg Wed Sep 14 00:06:26 2011 +0200 @@ -1,2 +1,2 @@ -Default -Default +Shoppa +Shoppa diff -r 368669bf6cb3 -r 86c59c34cdd5 share/hedgewars/Data/Scripts/Multiplayer/Racer.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Tue Sep 13 17:49:39 2011 -0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Wed Sep 14 00:06:26 2011 +0200 @@ -29,6 +29,15 @@ -- update feedback +------- +-- 0.2 +------- + +-- allow gameflags +-- extend time to 90s +-- remove other air-attack based weps +-- turn off water rise for sd + ----------------------------- -- SCRIPT BEGINS ----------------------------- @@ -369,9 +378,10 @@ ---------------------------------- function onGameInit() - GameFlags = gfInfAttack + gfSolidLand + gfInvulnerable + GameFlags = GameFlags + gfInfAttack + gfInvulnerable CaseFreq = 0 - Delay = 1000 -- doh + TurnTime = 90000 + WaterRise = 0 end @@ -458,6 +468,10 @@ end AddAmmo(CurrentHedgehog, amTardis, 0) + AddAmmo(CurrentHedgehog, amDrillStrike, 0) + AddAmmo(CurrentHedgehog, amMineStrike, 0) + AddAmmo(CurrentHedgehog, amNapalm, 0) + AddAmmo(CurrentHedgehog, amPiano, 0) end @@ -552,12 +566,12 @@ AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) -- if the player stops and "dies" or flies into water, stop him racing - if gear == CurrentHedgehog then + --[[if gear == CurrentHedgehog then DisableTumbler() ShowMission(loc("RACER"), loc("TRACK FAILED!"), loc("WINNING TIME: ") .. bestTimeComment, -amSkip, 4000) - end + end]] end @@ -587,10 +601,10 @@ end -function onAmmoStoreInit() +--[[function onAmmoStoreInit() SetAmmo(amRope, 9, 0, 0, 0) SetAmmo(amJetpack, 9, 0, 0, 0) SetAmmo(amSkip, 9, 0, 0, 0) -end +end]] diff -r 368669bf6cb3 -r 86c59c34cdd5 share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Tue Sep 13 17:49:39 2011 -0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Wed Sep 14 00:06:26 2011 +0200 @@ -5,7 +5,7 @@ --------------------------------------------------- --------------------------------------------------- --------------------------------------------------- ---- Space Invasion Code Follows (0.8.1) +--- Space Invasion Code Follows (0.9) --------------------------------------------------- --------------------------------------------------- -- VERSION HISTORY @@ -86,13 +86,13 @@ -- Boss Slayer (Destroy 2 blue circles for +25 points) -- Shield Master (disolve 5 shells for +10 points) --- Shield Miser (don't use your shield at all +20 points) +-- Shield Miser (don't use your shield at all (2.5*roundkills)+2 points) -- Depleted Kamikaze! (kamikaze into a blue/red circ when you are out of ammo) 5pts -- Timed Kamikaze! (kamikaze into a blue/red circ when you only have 5s left) 10pts -- Kamikaze Expert (combination of the above two) 15pts --- Multi-shot (destroy more than 1 invader with a single bullet) 5pts +-- Multi-shot (destroy more than 1 invader with a single bullet) 15pts -- X-Hit Combo (destroy another invader in less than 3 seconds) chainLength*2 points -- Accuracy Bonus (80% accuracy at the end of your turn with more than 5 shots fired) 15pts @@ -113,6 +113,15 @@ -- stop hiding non-existant 4th Tag -- redraw HUD on screen resolution change +------------------------ +-- version 0.9 +------------------------ +-- time for more 'EXPERIMENTS' mwahahahahahaha D: +-- (hopefully) balanced Shield Miser +-- bosses are no longer a redunkulous 50 points, but toned down to 30 +-- experimental radar (it's INTERACTIVE and math-heavy :D) (visual gears are safe... right? D:) +-- bugfix and balance for multishot + -------------------------- --notes for later -------------------------- @@ -128,7 +137,7 @@ capgrpAmmostate ----------------- AddCaption( chainLength .. LOC_NOT("-chain! +") .. chainLength*2 .. LOC_NOT(" points!"),0xffba00ff,capgrpAmmostate) -AddCaption(LOC_NOT("Multi-shot! +5 points!"),0xffba00ff,capgrpAmmostate) +AddCaption(LOC_NOT("Multi-shot! +15 points!"),0xffba00ff,capgrpAmmostate) ----------------- capgrpAmmoinfo @@ -220,6 +229,7 @@ --local teamBlue = {} --local teamOrange = {} --local teamGreen = {} +local roundKills = 0 local RK = 0 local GK = 0 local BK = 0 @@ -274,6 +284,13 @@ local vCirc = {} local vCCount = 0 +local rCirc = {} +local rCircX = {} +local rCircY = {} +local rAlpha = 255 +local rPingTimer = 0 +local radShotsLeft = 0 + local vCircActive = {} local vCircHealth = {} local vType = {} @@ -427,6 +444,8 @@ function AwardKills(t) + roundKills = roundKills + 1 + for i = 0,(TeamsCount-1) do if teamClan[i] == GetHogClan(CurrentHedgehog) then teamCircsKilled[i] = teamCircsKilled[i] + 1 @@ -709,6 +728,18 @@ end end +function onHJump() + + if (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) and + (rAlpha == 255) and (radShotsLeft > 0) then + rPingTimer = 0 + rAlpha = 0 + radShotsLeft = radShotsLeft -1 + AddCaption(loc("Pings left:") .. " " .. radShotsLeft,GetClanColor(GetHogClan(CurrentHedgehog)),capgrpMessage) + end + +end + ----------------- -- movement keys ----------------- @@ -787,6 +818,7 @@ loc("Movement: [Up], [Down], [Left], [Right]") .. "|" .. loc("Fire") .. ": " .. loc("[Left Shift]") .. "|" .. loc("Toggle Shield") .. ": " .. loc("[Enter]") .. "|" .. + loc("Radar Ping") .. ": " .. loc("[Backspace]") .. "|" .. --" " .. "|" .. --LOC_NOT("Invaders List: ") .. "|" .. @@ -818,6 +850,7 @@ function onNewTurn() primShotsLeft = primShotsMax + radShotsLeft = 2 stopMovement = false tumbleStarted = false beam = false @@ -828,6 +861,7 @@ BK = 0 OK = 0 SK = 0 + roundKills = 0 shieldMiser = true shotsFired = 0 shotsHit = 0 @@ -936,6 +970,7 @@ tumbleStarted = true TimeLeft = (TurnTime/1000) --45 FadeAlpha = 0 + rAlpha = 255 AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1) DrawTag(0) DrawTag(1) @@ -985,11 +1020,19 @@ rightOn = false SetMyCircles(false) HideTags() + rAlpha = 255 --nw WriteLnToConsole("Player is out of luck") if shieldMiser == true then - AddCaption(loc("Shield Miser!") .. " +20 " .. loc("points") .. "!",0xffba00ff,capgrpAmmoinfo) - AwardPoints(20) + + p = (roundKills*2.5) - ((roundKills*2.5)%1) + 2 + --p = (roundKills*2.5) + 2 + --if (p%2 ~= 0) then + -- p = p -0.5 + --end + + AddCaption(loc("Shield Miser!") .." +" .. p .." ".. loc("points") .. "!",0xffba00ff,capgrpAmmoinfo) + AwardPoints(p) end if ((shotsHit / shotsFired * 100) >= 80) and (shotsFired > 4) then @@ -1080,7 +1123,7 @@ end --WriteLnToConsole("End of GameTick") - + end function onGearResurrect(gear) @@ -1166,8 +1209,47 @@ ------------------------------------------------------------ ------------------------------------------------------------ - - +function DoHorribleThings(cUID) + + -- maybe + -- add a check to draw it inside the circ and not past it if + -- it is closer than 150 or w/e + + -- work out the distance to the target + g1X, g1Y = GetGearPosition(CurrentHedgehog) + g2X, g2Y = vCircX[cUID], vCircY[cUID] + q = g1X - g2X + w = g1Y - g2Y + r = math.sqrt( (q*q) + (w*w) ) --alternate + + + opp = w + if opp < 0 then + opp = opp*-1 + end + + -- work out the angle (theta) to the target + t = math.deg ( math.asin(opp / r) ) + + -- based on the radius of the radar, calculate what x/y displacement should be + NR = 150 -- radius at which to draw circs + NX = math.cos( math.rad(t) ) * NR + NY = math.sin( math.rad(t) ) * NR + + -- displace xy based on where this thing actually is + if q > 0 then + rCircX[cUID] = g1X - NX + else + rCircX[cUID] = g1X + NX + end + + if w > 0 then + rCircY[cUID] = g1Y - NY + else + rCircY[cUID] = g1Y + NY + end + +end function PlayerIsFine() return (playerIsFine) @@ -1230,6 +1312,10 @@ vCCount = vCCount +1 vCirc[i] = AddVisualGear(0,0,vgtCircle,0,true) + rCirc[i] = AddVisualGear(0,0,vgtCircle,0,true) + rCircX[i] = 0 + rCircY[i] = 0 + vCircDX[i] = 0 vCircDY[i] = 0 @@ -1257,6 +1343,9 @@ vCircCol[i] = 0xff00ffff SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + + SetVisualGearValues(rCirc[i], 0, 0, 100, 255, 1, 10, 0, 40, 3, vCircCol[i]) + end pShield = AddVisualGear(0,0,vgtCircle,0,true) @@ -1357,7 +1446,7 @@ elseif (vType[i] == "blueboss") then PlaySound(sndHellishImpact3) - AddCaption(loc("Boss defeated!") .. " +50 " .. loc("points") .. "!", 0x0050ffff,capgrpMessage) + AddCaption(loc("Boss defeated!") .. " +30 " .. loc("points") .. "!", 0x0050ffff,capgrpMessage) morte = AddGear(vCircX[i], vCircY[i], gtExplosives, 0, 0, 0, 1) SetHealth(morte, 0) @@ -1448,7 +1537,7 @@ vCircRadMax[i] = 180*5 vCircWidth[i] = 1 vCounterLim[i] = 2000 - vCircScore[i] = 50 + vCircScore[i] = 30 vCircHealth[i] = 3 else --elseif r == 1 then @@ -1481,6 +1570,11 @@ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(vCirc[i]) SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], g3, g4, g5, g6, g7, vCircRadius[i], vCircWidth[i], vCircCol[i]-0x000000ff) -- - -0x000000ff + + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(rCirc[i]) + SetVisualGearValues(rCirc[i], 0, 0, g3, g4, g5, g6, g7, g8, g9, vCircCol[i]-0x000000ff) + + vCircActive[i] = true -- new --nw WriteLnToConsole("CIRC " .. i .. ": X: " .. vCircX[i] .. "; Y: " .. vCircY[i]) @@ -1582,7 +1676,9 @@ circsHit = circsHit + 1 if circsHit > 1 then - AddCaption(loc("Multi-shot!") .. " +5 " .. loc("points") .. "!",0xffba00ff,capgrpAmmostate) + AddCaption(loc("Multi-shot!") .. " +15 " .. loc("points") .. "!",0xffba00ff,capgrpAmmostate) + AwardPoints(15) + circsHit = 0 end shotsHit = shotsHit + 1 @@ -1655,6 +1751,8 @@ g1Y = g1Y - g2Y dist = (g1X*g1X) + (g1Y*g1Y) + --DoHorribleThings(i, g1X, g1Y, g2X, g2Y, dist) + --nw WriteLnToConsole("Calcs done. Dist to CurrentHedgehog is " .. dist) -- calculate my real radius if I am an aura @@ -1705,7 +1803,6 @@ function HandleCircles() - --[[if CirclesAreGo == true then --CheckDistances() @@ -1719,8 +1816,27 @@ end]] + + if rAlpha ~= 255 then + + rPingTimer = rPingTimer + 1 + if rPingTimer == 100 then + rPingTimer = 0 + + rAlpha = rAlpha + 5 + if rAlpha >= 255 then + rAlpha = 255 + end + end + + end + for i = 0,(vCCount-1) do + --if (vCircActive[i] == true) then + SetVisualGearValues(rCirc[i], rCircX[i], rCircY[i], 100, 255, 1, 10, 0, 40, 3, vCircCol[i]-rAlpha) + --end + vCounter[i] = vCounter[i] + 1 if vCounter[i] >= vCounterLim[i] then @@ -1870,6 +1986,11 @@ for i = 0,(vCCount-1) do vCircX[i] = vCircX[i] + vCircDX[i] vCircY[i] = vCircY[i] + vCircDY[i] + + if (CurrentHedgehog ~= nil) and (rAlpha ~= 255) then + DoHorribleThings(i)--(i, g1X, g1Y, g2X, g2Y, dist) + end + end if (TimeLeft == 0) and (tumbleStarted == true) then