mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-25 13:09:11 +01:00
GORILLA - The Revival (#4957)
* GORILLA * is this absolute * less indentation * Minor balance adjustments * Mech update
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon
|
||||
name = "8.8cm KwK 47"
|
||||
desc = "<i>Precision German engineering!</i>" // Why would you ever take this off the mech, anyway?
|
||||
icon_state = "mecha_uac2"
|
||||
equip_cooldown = 60 // 6 seconds
|
||||
projectile = /obj/item/projectile/bullet/cannon
|
||||
fire_sound = 'sound/weapons/cannon.ogg'
|
||||
projectiles = 1
|
||||
projectile_energy_cost = 1000
|
||||
salvageable = 0 // We don't want players ripping this off a dead mech. Could potentially be a prize for beating it if Devs bless me and someone offers a nerf idea.
|
||||
|
||||
/obj/item/projectile/bullet/cannon
|
||||
name ="armor-piercing shell"
|
||||
icon = 'icons/obj/projectiles.dmi'
|
||||
icon_state = "shell"
|
||||
damage = 1000 // In order to 1-hit any other mech and royally fuck anyone unfortunate enough to get in the way.
|
||||
|
||||
/obj/item/projectile/bullet/cannon/on_hit(var/atom/target, var/blocked = 0)
|
||||
explosion(target, 0, 0, 2, 4)
|
||||
return 1
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon/weak
|
||||
name = "8.8 cm KwK 36"
|
||||
equip_cooldown = 120 // 12 seconds.
|
||||
projectile = /obj/item/projectile/bullet/cannon/weak
|
||||
projectile_energy_cost = 400
|
||||
salvageable = 1
|
||||
|
||||
/obj/item/projectile/bullet/cannon/weak
|
||||
name ="canister shell"
|
||||
icon_state = "canister"
|
||||
damage = 120 //Do not get fucking shot.
|
||||
|
||||
/* // GLITCHY UND LAGGY. Will later look into fixing.
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mg42
|
||||
name = "Maschinengewehr 60"
|
||||
icon_state = "mecha_uac2"
|
||||
equip_cooldown = 10
|
||||
projectile = /obj/item/projectile/bullet/midbullet2
|
||||
fire_sound = 'sound/weapons/mg42.ogg'
|
||||
projectiles = 1000
|
||||
projectiles_per_shot = 5
|
||||
deviation = 0.3
|
||||
projectile_energy_cost = 20
|
||||
fire_cooldown = 1
|
||||
salvageable = 0 // We don't want players ripping this off a dead mech.
|
||||
*/
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gorilla
|
||||
name = "Gorilla wreckage"
|
||||
desc = "... Blitzkrieg?"
|
||||
icon = 'icons/mecha/mecha64x64.dmi'
|
||||
icon_state = "pzrwreck"
|
||||
layer = 4 // so it overlaps other people
|
||||
pixel_x = -16
|
||||
anchored = 1 // It's fucking huge. You aren't moving it.
|
||||
|
||||
/obj/mecha/combat/gorilla
|
||||
name = "Gorilla"
|
||||
desc = "<b>Blitzkrieg!</b>" //stop using all caps in item descs i will fight you. its redundant with the bold.
|
||||
icon = 'icons/mecha/mecha64x64.dmi'
|
||||
icon_state = "pzrmech"
|
||||
initial_icon = "pzrmech"
|
||||
pixel_x = -16
|
||||
step_in = 10
|
||||
health = 5000
|
||||
opacity = 0 // Because there's big tall legs to look through. Also it looks fucky if this is set to 1.
|
||||
deflect_chance = 50
|
||||
damage_absorption = list("brute"=0.1,"fire"=0.8,"bullet"=0.1,"laser"=0.6,"energy"=0.7,"bomb"=0.7) //values show how much damage will pass through, not how much will be absorbed.
|
||||
max_temperature = 35000 //Just a bit better than the Durand.
|
||||
infra_luminosity = 3
|
||||
var/zoom = 0
|
||||
var/smoke = 5
|
||||
var/smoke_ready = 1
|
||||
var/smoke_cooldown = 100
|
||||
var/datum/effect/effect/system/smoke_spread/smoke_system = new
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/gorilla
|
||||
add_req_access = 0
|
||||
internal_damage_threshold = 25
|
||||
force = 60
|
||||
max_equip = 5
|
||||
|
||||
/obj/mecha/combat/gorilla/New()
|
||||
..()
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) // This thing basically cannot function without an external power supply.
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon(src)
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon/weak(src) //Saves energy, I suppose. Anti-infantry.
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive(src)
|
||||
ME.attach(src)
|
||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src)
|
||||
ME.attach(src)
|
||||
src.smoke_system.set_up(3, 0, src)
|
||||
src.smoke_system.attach(src)
|
||||
return
|
||||
|
||||
/obj/mecha/combat/gorilla/mechstep(direction)
|
||||
var/result = step(src,direction)
|
||||
playsound(src,"mechstep",40,1)
|
||||
return result
|
||||
|
||||
/obj/mecha/combat/gorilla/mechturn(direction)
|
||||
dir = direction
|
||||
playsound(src,"mechstep",40,1)
|
||||
|
||||
|
||||
/obj/mecha/combat/gorilla/relaymove(mob/user,direction)
|
||||
if(user != src.occupant)
|
||||
user.loc = get_turf(src)
|
||||
to_chat(user, "You climb out from [src]")
|
||||
return 0
|
||||
if(!can_move)
|
||||
return 0
|
||||
if(zoom)
|
||||
if(world.time - last_message > 20)
|
||||
src.occupant_message("Unable to move while in zoom mode.")
|
||||
last_message = world.time
|
||||
return 0
|
||||
if(connected_port)
|
||||
if(world.time - last_message > 20)
|
||||
src.occupant_message("Unable to move while connected to the air system port")
|
||||
last_message = world.time
|
||||
return 0
|
||||
if(state || !has_charge(step_energy_drain))
|
||||
return 0
|
||||
var/tmp_step_in = step_in
|
||||
var/tmp_step_energy_drain = step_energy_drain
|
||||
var/move_result = 0
|
||||
if(internal_damage&MECHA_INT_CONTROL_LOST)
|
||||
move_result = mechsteprand()
|
||||
else if(src.dir!=direction)
|
||||
move_result = mechturn(direction)
|
||||
else
|
||||
move_result = mechstep(direction)
|
||||
if(move_result)
|
||||
if(istype(src.loc, /turf/space))
|
||||
if(!src.check_for_support())
|
||||
src.pr_inertial_movement.start(list(src,direction))
|
||||
can_move = 0
|
||||
spawn(tmp_step_in) can_move = 1
|
||||
use_power(tmp_step_energy_drain)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/mecha/combat/gorilla/verb/smoke()
|
||||
set category = "Exosuit Interface"
|
||||
set name = "Smoke"
|
||||
set src = usr.loc
|
||||
set popup_menu = 0
|
||||
if(usr!=src.occupant)
|
||||
return
|
||||
if(smoke_ready && smoke>0)
|
||||
src.smoke_system.start()
|
||||
smoke--
|
||||
smoke_ready = 0
|
||||
spawn(smoke_cooldown)
|
||||
smoke_ready = 1
|
||||
return
|
||||
|
||||
/obj/mecha/combat/gorilla/verb/zoom()
|
||||
set category = "Exosuit Interface"
|
||||
set name = "Zoom"
|
||||
set src = usr.loc
|
||||
set popup_menu = 0
|
||||
if(usr!=src.occupant)
|
||||
return
|
||||
if(src.occupant.client)
|
||||
src.zoom = !src.zoom
|
||||
src.log_message("Toggled zoom mode.")
|
||||
src.occupant_message("<font color='[src.zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
|
||||
if(zoom)
|
||||
src.occupant.client.view = 12
|
||||
playsound(src.occupant, 'sound/mecha/imag_enh.ogg',50)
|
||||
else
|
||||
src.occupant.client.view = world.view//world.view - default mob view size
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/combat/gorilla/go_out()
|
||||
if(src.occupant && src.occupant.client)
|
||||
src.occupant.client.view = world.view
|
||||
src.zoom = 0
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/combat/gorilla/get_stats_part()
|
||||
var/output = ..()
|
||||
output += {"<b>Smoke:</b> [smoke]"}
|
||||
return output
|
||||
|
||||
|
||||
/obj/mecha/combat/gorilla/get_commands()
|
||||
var/output = {"<div class='wr'>
|
||||
<div class='header'>Special</div>
|
||||
<div class='links'>
|
||||
<a href='?src=\ref[src];toggle_zoom=1'>Toggle zoom mode</a><br>
|
||||
<a href='?src=\ref[src];smoke=1'>Smoke</a>
|
||||
</div>
|
||||
</div>
|
||||
"}
|
||||
output += ..()
|
||||
return output
|
||||
|
||||
/obj/mecha/combat/gorilla/Topic(href, href_list)
|
||||
..()
|
||||
if (href_list["smoke"])
|
||||
src.smoke()
|
||||
if (href_list["toggle_zoom"])
|
||||
src.zoom()
|
||||
return
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
|
||||
|
||||
/****** Do not tick this file in without looking over this code first ******/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/obj/item/mecha_parts/mecha_equipment/book_stocker
|
||||
|
||||
action(var/mob/target)
|
||||
if(!istype(target))
|
||||
return
|
||||
if(target.search_contents_for(/obj/item/book/WGW))
|
||||
target.gib()
|
||||
target.client.gib()
|
||||
target.client.mom.monkeyize()
|
||||
target.client.mom.gib()
|
||||
for(var/mob/M in range(target, 1000))
|
||||
M.gib()
|
||||
explosion(target.loc,100000,100000,100000)
|
||||
usr.gib()
|
||||
world.Reboot()
|
||||
return 1
|
||||
|
||||
*/
|
||||
@@ -117,46 +117,41 @@
|
||||
projectile = /obj/item/projectile/beam/stun
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
/*
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/honker
|
||||
name = "sound emission device"
|
||||
icon_state = "mecha_honker"
|
||||
energy_drain = 300
|
||||
equip_cooldown = 150
|
||||
range = MELEE|RANGED
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 4, TECH_ILLEGAL = 1)
|
||||
|
||||
var/ear_safety = 0
|
||||
if(iscarbon(M))
|
||||
/obj/item/mecha_parts/mecha_equipment/honker/action(target)
|
||||
if(!chassis)
|
||||
return 0
|
||||
if(energy_drain && chassis.get_charge() < energy_drain)
|
||||
return 0
|
||||
if(!equip_ready)
|
||||
return 0
|
||||
|
||||
playsound(chassis, 'sound/effects/bang.ogg', 30, 1, 30)
|
||||
chassis.occupant_message("<span class='warning'>You emit a high-pitched noise from the mech.</span>")
|
||||
for(var/mob/living/carbon/M in ohearers(6, chassis))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/ear_safety = 0
|
||||
ear_safety = M.get_ear_protection()
|
||||
|
||||
action(target)
|
||||
if(!chassis)
|
||||
return 0
|
||||
if(energy_drain && chassis.get_charge() < energy_drain)
|
||||
return 0
|
||||
if(!equip_ready)
|
||||
return 0
|
||||
|
||||
playsound(chassis, 'sound/effects/bang.ogg', 30, 1, 30)
|
||||
chassis.occupant_message("<span class='warning'>You emit a high-pitched noise from the mech.</span>")
|
||||
for(var/mob/living/carbon/M in ohearers(6, chassis))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(ear_safety > 0)
|
||||
return
|
||||
to_chat(M, "<span class='warning'>\Your ears feel like they're bleeding!</span>")
|
||||
playsound(M, 'sound/effects/bang.ogg', 70, 1, 30)
|
||||
M.sleeping = 0
|
||||
M.ear_deaf += 30
|
||||
M.ear_damage += rand(5, 20)
|
||||
M.Weaken(3)
|
||||
M.Stun(5)
|
||||
chassis.use_power(energy_drain)
|
||||
log_message("Used a sound emission device.")
|
||||
do_after_cooldown()
|
||||
return
|
||||
*/
|
||||
if(ear_safety > 0)
|
||||
return
|
||||
to_chat(M, "<span class='warning'>Your ears feel like they're bleeding!</span>")
|
||||
playsound(M, 'sound/effects/bang.ogg', 70, 1, 30)
|
||||
M.sleeping = 0
|
||||
M.ear_deaf += 30
|
||||
M.ear_damage += rand(5, 20)
|
||||
M.Weaken(3)
|
||||
M.Stun(5)
|
||||
chassis.use_power(energy_drain)
|
||||
log_message("Used a sound emission device.")
|
||||
do_after_cooldown()
|
||||
return
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic
|
||||
name = "general ballisic weapon"
|
||||
@@ -361,4 +356,4 @@
|
||||
if(!action_checks(user) || !active)
|
||||
return
|
||||
user.electrocute_act(shock_damage, src)
|
||||
return chassis.dynattackby(W,user)
|
||||
return chassis.dynattackby(W,user)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 53 KiB |
@@ -769,6 +769,7 @@
|
||||
#include "code\game\mecha\mecha_wreckage.dm"
|
||||
#include "code\game\mecha\combat\combat.dm"
|
||||
#include "code\game\mecha\combat\durand.dm"
|
||||
#include "code\game\mecha\combat\gorilla.dm"
|
||||
#include "code\game\mecha\combat\gygax.dm"
|
||||
#include "code\game\mecha\combat\marauder.dm"
|
||||
#include "code\game\mecha\combat\phazon.dm"
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user