From 931af36a2bde98e4039aa116ad4524132f62c5f7 Mon Sep 17 00:00:00 2001 From: Screemonster Date: Sun, 5 Feb 2017 09:04:37 +0000 Subject: [PATCH 1/3] Adds micro-only light mech/vehicle framework, plus equipment. --- code/game/mecha/micro/micro.dm | 302 +++++++++++++++++++++++ code/game/mecha/micro/micro_equipment.dm | 84 +++++++ code/game/mecha/micro/security.dm | 43 ++++ icons/mecha/mecha_equipment_vr.dmi | Bin 864 -> 3737 bytes icons/mecha/micro.dmi | Bin 0 -> 2830 bytes vorestation.dme | 3 + 6 files changed, 432 insertions(+) create mode 100644 code/game/mecha/micro/micro.dm create mode 100644 code/game/mecha/micro/micro_equipment.dm create mode 100644 code/game/mecha/micro/security.dm create mode 100644 icons/mecha/micro.dmi diff --git a/code/game/mecha/micro/micro.dm b/code/game/mecha/micro/micro.dm new file mode 100644 index 0000000000..617034696b --- /dev/null +++ b/code/game/mecha/micro/micro.dm @@ -0,0 +1,302 @@ +/obj/mecha/micro + icon = 'icons/mecha/micro.dmi' + force = 10 //still a robot + anchored = 0 //light enough to push and pull, but you still can't just walk past them. Like people on non-help. + opacity = 0 //small enough to see around, like people. + var/melee_cooldown = 10 + var/melee_can_hit = 1 + var/list/destroyable_obj = list(/obj/mecha, /obj/structure/window, /obj/structure/grille, /turf/simulated/wall) + internal_damage_threshold = 50 + maint_access = 0 + //add_req_access = 0 + //operation_req_access = list(access_hos) + damage_absorption = list("brute"=1,"fire"=1,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) + var/am = "d3c2fbcadca903a41161ccc9df9cf948" + +/* +/obj/mecha/micro/range_action(target as obj|mob|turf) + if(internal_damage&MECHA_INT_CONTROL_LOST) + target = pick(view(3,target)) + if(selected_weapon) + selected_weapon.fire(target) + return +*/ + +/obj/mecha/micro/melee_action(target as obj|mob|turf) + if(internal_damage&MECHA_INT_CONTROL_LOST) + target = safepick(oview(1,src)) + if(!melee_can_hit || !istype(target, /atom)) return + if(istype(target, /mob/living)) + var/mob/living/M = target + if(src.occupant.a_intent == I_HURT) + playsound(src, 'sound/weapons/punch4.ogg', 50, 1) + if(damtype == "brute") + step_away(M,src,15) + /* + if(M.stat>1) + M.gib() + melee_can_hit = 0 + if(do_after(melee_cooldown)) + melee_can_hit = 1 + return + */ + if(istype(target, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = target + // if (M.health <= 0) return + + var/obj/item/organ/external/temp = H.get_organ(pick(BP_TORSO, BP_TORSO, BP_TORSO, BP_HEAD)) + if(temp) + var/update = 0 + switch(damtype) + if("brute") + H.Paralyse(1) + update |= temp.take_damage(rand(force/2, force), 0) + if("fire") + update |= temp.take_damage(0, rand(force/2, force)) + if("tox") + if(H.reagents) + if(H.reagents.get_reagent_amount("carpotoxin") + force < force*2) + H.reagents.add_reagent("carpotoxin", force) + if(H.reagents.get_reagent_amount("cryptobiolin") + force < force*2) + H.reagents.add_reagent("cryptobiolin", force) + else + return + if(update) H.UpdateDamageIcon() + H.updatehealth() + + else + switch(damtype) + if("brute") + M.Paralyse(1) + M.take_overall_damage(rand(force/2, force)) + if("fire") + M.take_overall_damage(0, rand(force/2, force)) + if("tox") + if(M.reagents) + if(M.reagents.get_reagent_amount("carpotoxin") + force < force*2) + M.reagents.add_reagent("carpotoxin", force) + if(M.reagents.get_reagent_amount("cryptobiolin") + force < force*2) + M.reagents.add_reagent("cryptobiolin", force) + else + return + M.updatehealth() + src.occupant_message("You hit [target].") + src.visible_message("[src.name] hits [target].") + else + step_away(M,src) + src.occupant_message("You push [target] out of the way.") + src.visible_message("[src] pushes [target] out of the way.") + + melee_can_hit = 0 + if(do_after(melee_cooldown)) + melee_can_hit = 1 + return + + else + if(damtype == "brute") + for(var/target_type in src.destroyable_obj) + if(istype(target, target_type) && hascall(target, "attackby")) + src.occupant_message("You hit [target].") + src.visible_message("[src.name] hits [target]") + if(!istype(target, /turf/simulated/wall)) + target:attackby(src,src.occupant) + else if(prob(5)) + target:dismantle_wall(1) + src.occupant_message("You smash through the wall.") + src.visible_message("[src.name] smashes through the wall") + playsound(src, 'sound/weapons/smash.ogg', 50, 1) + melee_can_hit = 0 + if(do_after(melee_cooldown)) + melee_can_hit = 1 + break + return + +/* +/obj/mecha/micro/proc/mega_shake(target) + if(!istype(target, /obj) && !istype(target, /mob)) return + if(istype(target, /mob)) + var/mob/M = target + M.make_dizzy(3) + M.adjustBruteLoss(1) + M.updatehealth() + for (var/mob/V in viewers(src)) + V.show_message("[src.name] shakes [M] like a rag doll.") + return +*/ + +/* + if(energy>0 && can_move) + if(step(src,direction)) + can_move = 0 + spawn(step_in) can_move = 1 + if(overload) + energy = energy-2 + health-- + else + energy-- + return 1 + + return 0 +*/ +/* +/obj/mecha/micro/hear_talk(mob/M as mob, text) + ..() + if(am && M==occupant) + if(findtext(text,"")) + sam() + return + +/obj/mecha/micro/proc/sam() + if(am) + var/window = {" + + + + + +
+
+ + +
+
+ + + "} + occupant << browse(window, "window=sam;size=800x600;") + onclose(occupant, "sam", src) + return +*/ +/obj/mecha/micro/moved_inside(var/mob/living/carbon/human/H as mob) + if(..()) + if(H.client) + H.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi") + return 1 + else + return 0 + +/obj/mecha/micro/go_out() + if(src.occupant && src.occupant.client) + src.occupant.client.mouse_pointer_icon = initial(src.occupant.client.mouse_pointer_icon) + ..() + return + +/obj/mecha/micro/Topic(href,href_list) + ..() + var/datum/topic_input/filter = new (href,href_list) + if(filter.get("close")) + am = null + return + /* + if(filter.get("saminput")) + if(md5(filter.get("saminput")) == am) + occupant_message("From the lies of the Antipath, Circuit preserve us.") + am = null + return + */ + +// override move_inside() so only micro crew can use them + +/obj/mecha/micro/move_inside() + var/mob/living/carbon/C = usr + if (C.size_multiplier >= 0.5) + C << "You can't fit in this suit!" + return + else + ..() + +/obj/mecha/micro/move_inside_passenger() + var/mob/living/carbon/C = usr + if (C.size_multiplier >= 0.5) + C << "You can't fit in this suit!" + return + else + ..() + +// override move/turn procs so they play more appropriate sounds. Placeholder sounds for now, but mechmove04 at least sounds like tracks for the poleat. + +/obj/mecha/micro/mechturn(direction) + set_dir(direction) + playsound(src,'sound/mecha/mechmove03.ogg',40,1) + return 1 + +/obj/mecha/micro/mechstep(direction) + var/result = step(src,direction) + if(result) + playsound(src,'sound/mecha/mechmove04.ogg',40,1) + return result + +/obj/effect/decal/mecha_wreckage/micro + icon = 'icons/mecha/micro.dmi' \ No newline at end of file diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm new file mode 100644 index 0000000000..c855e94031 --- /dev/null +++ b/code/game/mecha/micro/micro_equipment.dm @@ -0,0 +1,84 @@ +//DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE! +//I'm annoyed I even have to tell you this! SPRITE FIRST, then commit. + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/microlaser + desc = "A mounted laser-carbine for light exosuits." + equip_cooldown = 10 // same as the laser carbine + name = "\improper WS-19 \"Torch\" laser carbine" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "micromech_laser" + energy_drain = 50 + projectile = /obj/item/projectile/beam + fire_sound = 'sound/weapons/Laser.ogg' + required_type = list(/obj/mecha/micro) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy + desc = "A mounted laser cannon for light exosuits." + equip_cooldown = 30 // same as portable + name = "\improper PC-20 \"Lance\" light laser cannon" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "micromech_lasercannon" + energy_drain = 120 + projectile = /obj/item/projectile/beam/heavylaser + fire_sound = 'sound/weapons/lasercannonfire.ogg' + required_type = list(/obj/mecha/micro) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser + desc = "A mounted taser for light exosuits." + name = "\improper TS-12 \"Suppressor\" integrated taser" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "micromech_taser" + energy_drain = 40 + equip_cooldown = 10 + projectile = /obj/item/projectile/beam/stun + fire_sound = 'sound/weapons/Taser.ogg' + required_type = list(/obj/mecha/micro) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun + desc = "A mounted combat shotgun with integrated ammo-lathe." + name = "\improper Remington C-12 \"Boomstick\"" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "micromech_shotgun" + equip_cooldown = 15 + var/mode = 0 //0 - buckshot, 1 - beanbag, 2 - slug. + projectile = /obj/item/projectile/bullet/pellet/shotgun + fire_sound = 'sound/weapons/shotgun.ogg' + fire_volume = 80 + projectiles = 6 + projectiles_per_shot = 1 + deviation = 0.7 + projectile_energy_cost = 25 + required_type = list(/obj/mecha/micro) + + Topic(href,href_list) + ..() + if(href_list["mode"]) + mode = text2num(href_list["mode"]) + switch(mode) + if(0) + occupant_message("Now firing buckshot.") + projectile = /obj/item/projectile/bullet/pellet/shotgun + if(1) + occupant_message("Now firing beanbags.") + projectile = /obj/item/projectile/bullet/shotgun/beanbag + if(2) + occupant_message("Now firing slugs.") + projectile = /obj/item/projectile/bullet/shotgun + + return + + get_equip_info() + return "[..()] \[BS|BB|S\]" + + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/microflashbang + desc = "A mounted grenade launcher for smaller mechs." + name = "\improper FP-20 mounted grenade launcher" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "micromech_launcher" + projectiles = 1 + missile_speed = 1.5 + projectile_energy_cost = 800 + equip_cooldown = 30 + det_time = 15 + required_type = list(/obj/mecha/micro) \ No newline at end of file diff --git a/code/game/mecha/micro/security.dm b/code/game/mecha/micro/security.dm new file mode 100644 index 0000000000..9f7a8ff896 --- /dev/null +++ b/code/game/mecha/micro/security.dm @@ -0,0 +1,43 @@ +/obj/mecha/micro/polecat //figured give 'em the names of small predatory critters + desc = "A hardened security vehicle for micro crewmembers. To them, it's a superheavy tank. To everyone else, it's kinda cute." + name = "Polecat" + icon_state = "polecat" + initial_icon = "polecat" + step_in = 2 // human running speed + dir_in = 1 //Facing North. + health = 150 + deflect_chance = 10 + damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) + max_temperature = 15000 + infra_luminosity = 6 + var/overload = 0 + var/overload_coeff = 2 + wreckage = /obj/effect/decal/mecha_wreckage/micro/polecat + internal_damage_threshold = 35 + max_equip = 3 + +/obj/effect/decal/mecha_wreckage/micro/polecat + name = "Polecat wreckage" + icon_state = "polecat-broken" + +/obj/mecha/micro/weasel + desc = "A light scout exosuit for micro crewmembers, built for fast reconnaisance. Yes, it IS a miner borg chassis with wheels attached to the legs. ." + name = "Weasel" + icon_state = "weasel" + initial_icon = "weasel" + step_in = 1 // zoom zoom + dir_in = 1 //Facing North. + health = 100 + deflect_chance = 5 + damage_absorption = list("brute"=1,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.85,"bomb"=1) + max_temperature = 5000 + infra_luminosity = 6 + var/overload = 0 + var/overload_coeff = 2 + wreckage = /obj/effect/decal/mecha_wreckage/micro/weasel + internal_damage_threshold = 20 + max_equip = 2 + +/obj/effect/decal/mecha_wreckage/micro/weasel + name = "Weasel wreckage" + icon_state = "weasel-broken" diff --git a/icons/mecha/mecha_equipment_vr.dmi b/icons/mecha/mecha_equipment_vr.dmi index 52c17968c38be8dcf0ea36fadd260fd9468d776b..74873476b5cad007b0773becbe51d403446fd5bd 100644 GIT binary patch literal 3737 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 X!RJ*91#AfXUlX7X)>bQ5u@3tWuEs|F literal 864 zcmV-m1E2hfP)Gpc#l|+z^=k;(5WKk+ zagtCVB{LKtA%0JQ?%mB@N;|;7z->cpW1-bV=-0C=2JR&a84_w-Y6@%7{? zOD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DK|AaBQZWVzqB~D zq$sfqbDJ;_l+&&E8X->LWT z0kV8v06+l+1CXegfM*TH7(V2s;^U|J+*$_oC|H-~GnFRbH6T|A0k2NazSz318KFR# zf=f-M)-=GMv#5l;TG-m!oUy17mtdHBg#6bFKfxg{SlG*^$rzUiu!JR-2TR`a?bSC% zu@LZ5@V)kL=sfTT^B~{C#)1iWmD$GTUZBFC9nu&NVgbE{LtZMfg+dkL}dYn*-^Bo2Qk35bQ1ekIog6D>fIWP!(zV8Vp| z7B78xqWTHq6$ZkaNkg6~JG><|q+Rm&I#ys8-nq}5)r!GMd`k@9Xo&o{ z?8BRVKgh4Dc)h-kRoI1hg?xMGpH(F)>vil1r&+!UZ`e;DD~K0RBG8Aom|xv*SKy8k zXnc6vc0Yl0$5`+JO>bd0fgGYcW{JH*o;R!=KRoznuMmHX+w^aF5BKOOet-cmJ^HJh ql2YXVOi3|EoYwDWNb8^QhVTdE{wJH(%WeAr0000PfubYE@Wh6K|w)_i;H@CdN^ea zE>a3vSy^goYXAQ;Xic+mLMBtJU;h9zA0HnV7Z(6#0478U0u2`yVw!1vqW}Pc076rl z05eI(UNQgx00DGTPE!Ct=GbNc0057AR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0 z_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSAU`KHIk7~E zi!&v&s2HS;i!-e#F*g;&HpEb;n_rNchfr*YUvW}Vel`)x%Tp7JQ*#J90iujJ7eLkG zcYv~jtDg%v)BtKHTzo+UQIr4x34cjMK~!jg?OE%3n>Y{!3mTB+nAq!HvfFOCh;BB- zNxR$kf3-a`fQ@dz*L44NYCE7KYmP?Jm^qE2U-rv>*)JO`p1qyJovuIT^c4g)Kk9!I zhi*KBhVh?7pr4a~U2aSZ;~Rs)*u^y)F~7%jL;@53Nim+n96a8=h*h7hU9cX_^xWBSa~)MkLNBtqQY-hx6VGCRCcjz+jg2Z4^%-j|84UZD-qMU1#CtiJ-8N0O9GRu7cnoTdg6AdHnV_5j@F97%kgmte97q*B=9iMSXq z_+dBVyTi~l8g*6^0{tpw6yMt$TItN*<#Yt9fe_vO3pvY#E$B)yBQeZ;-HRG zlrxg)Ut}WA@_2W1i&LJ(A~R1q1t6x~Px0IBVhVwQC#hkG;%|96B;pqn5p7) z!p=A);}Rr%d%EIp=^OHpA1HqKBgx;}=?Fz)+HtcvUUETBcUFhO^iTHN34_Cgz$M#= zEAxEtg4!338T=gEPrvr=?Rtzed2sBXxiKJ6^ZO8!xpAj-tbk?QjzN{BX$k;xx9Hc#`LY z=Xqk{m?4e$$M41)PWP)|IQYm00^(Dif5H-sEhbJ800l(A#G?ZR)t(~4d{_me!=Jt3 zS6Utp^f@#fd^q(m@hJLuJUWYfJbqjWN73iOe)K+yZm8)stz{KzW80l4S`uqlYj6kDHMV0at|YOrxy1{@Cxzk?4U5aK?L z|ALE907Ci!W*9}fXjEC0swp%)+7XDD0i|N{A9*4`ql%k{hrdJ=)CZEgEW7jR2mFk$ zvGxV_f~F}e4~`80j-?0hrzcP{K0L&K`}KjxN2*Zo?tJ=zYI!`ZyQfa;Ny|#ScTf7j zhYt^b`}Kh+I)?QFY%pHa;;DP$r(xNe$8Z6UR_FuA;|z{-j$Nj8ff*L~8_CK_#q;GudTq+cTKA%OM~Z!CO`K9FpWQ~V74apFMnF|1qtr0J+>s#hZiZy9eL zd|4lG@pH0`t_n!+ma*GpgyU(yGr_}PQ^4k}GMTj?r5AdD~R16Ta< zd^o!}S=ZrtNb^K1-F1%puIny%XW>iwKon(nDCmGcinABT_(=15aDa59Z3bO~wgJag zW8h2rK$HpiKQeyy;TT_aPxM^g6KI}rZ~3nqwDIpC{?gq9UD5{z0%4p3fYUGOY!wn2 z!45&!JW(6t)c46Gu%HiI2?TJCfJwlKz!SCg1e8NyRv-BM`S2$gyuAbxcuvvY8LQp6<5Rka`Y{EVOLkQesG8mWmzUL*%-dz2MzPYFm ztTK9VFa1Msbvsj4F6jd+oDao&rF?Fx**rfi=bi;J?;*VriYnb}B6i zshNQjfnFZ~fo~w->H{kYa9xX$bZ8T5%^mP)=ONHykGy>Q_U%Qv`oLNSeU;yqzLQLC zW!snjw*QMh@bb^U|GxP2fw9+YqEht#2q<7#Npq@a$s!v->gD+F^?^Yna`k~IYMSV~ zT1-?@atTjbrb~c?POk1frTw4}3>uL~AK>XPCMud+TNI?G`h1Yk${h;(k$Thz1`Wv7 z2i7JkL;&?`f#-WKS~Vyx3vUGa`hS?APajy7sIZVl2NymMJwMRvsF&k^tp6!n`1FA> zQ6YLWi3&k3DFS}?OcC@-&jKy$1EY|MR2fcGR5%qK{p$PO6Veq_T{#4n^nr_z2?pUr z#ROzsd(HsEWm(rUNMKeUxCohG5KdGD4oU&64iTs^40mz}Ea(GQArlN_Fj2`$RR!ha zAOU3I0-ZcrYF;0>3Yj>F+Lx&M2*^q<6QE8mfq8x4Dr8~`zT~0_`XCn3`40PcnJDq0QZ4&I;#(Wz?_hIB@im^2Ll`=u%r(x2$jPSf!hAs zr3#K8tpB@9Ic_GZ@6HIa>w@7Qjr#Z)g!O?=D@~P>ov6M$47#pqJkr9dJ~R4&q6nZ` zv=fzXoVg(fHS;kD^_kNL3f-Wga}rf$Kl*od-F0=iY@F*erw=F%&QID&RJyV@%c}^? z=mU}qoytyBUDsJ!(HLI$foHU$2rj{lK7enLKC8_{)hXJW+F}4h(hd_q4(C3e(9G!r gpa6PSq8cLbAJBN40Ma$bm;e9(07*qoM6N<$f{BY6e*gdg literal 0 HcmV?d00001 diff --git a/vorestation.dme b/vorestation.dme index f97086d22b..2d10290452 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -725,6 +725,9 @@ #include "code\game\mecha\equipment\weapons\weapons.dm" #include "code\game\mecha\medical\medical.dm" #include "code\game\mecha\medical\odysseus.dm" +#include "code\game\mecha\micro\micro.dm" +#include "code\game\mecha\micro\micro_equipment.dm" +#include "code\game\mecha\micro\security.dm" #include "code\game\mecha\working\hoverpod.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" From 2a9a4f657b23f4dcfdc64ee3b3e75f87dcf5ecd1 Mon Sep 17 00:00:00 2001 From: Screemonster Date: Mon, 6 Feb 2017 06:49:33 +0000 Subject: [PATCH 2/3] Adds the gopher and equipment, better icon for weasel --- code/game/mecha/micro/micro.dm | 23 ++-- code/game/mecha/micro/micro_equipment.dm | 150 ++++++++++++++++++++++- code/game/mecha/micro/security.dm | 33 +++-- code/game/mecha/micro/utility.dm | 24 ++++ icons/mecha/mecha_equipment_vr.dmi | Bin 3737 -> 4584 bytes icons/mecha/micro.dmi | Bin 2830 -> 4028 bytes vorestation.dme | 1 + 7 files changed, 202 insertions(+), 29 deletions(-) create mode 100644 code/game/mecha/micro/utility.dm diff --git a/code/game/mecha/micro/micro.dm b/code/game/mecha/micro/micro.dm index 617034696b..6d0d108bb8 100644 --- a/code/game/mecha/micro/micro.dm +++ b/code/game/mecha/micro/micro.dm @@ -3,6 +3,7 @@ force = 10 //still a robot anchored = 0 //light enough to push and pull, but you still can't just walk past them. Like people on non-help. opacity = 0 //small enough to see around, like people. + step_energy_drain = 2 // They're light and small. A compact is gonna get better MPG than a truck. var/melee_cooldown = 10 var/melee_can_hit = 1 var/list/destroyable_obj = list(/obj/mecha, /obj/structure/window, /obj/structure/grille, /turf/simulated/wall) @@ -239,19 +240,6 @@ onclose(occupant, "sam", src) return */ -/obj/mecha/micro/moved_inside(var/mob/living/carbon/human/H as mob) - if(..()) - if(H.client) - H.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi") - return 1 - else - return 0 - -/obj/mecha/micro/go_out() - if(src.occupant && src.occupant.client) - src.occupant.client.mouse_pointer_icon = initial(src.occupant.client.mouse_pointer_icon) - ..() - return /obj/mecha/micro/Topic(href,href_list) ..() @@ -298,5 +286,12 @@ playsound(src,'sound/mecha/mechmove04.ogg',40,1) return result +/obj/mecha/micro/mechsteprand() + var/result = step_rand(src) + if(result) + playsound(src,'sound/mecha/mechmove04.ogg',40,1) + return result + /obj/effect/decal/mecha_wreckage/micro - icon = 'icons/mecha/micro.dmi' \ No newline at end of file + icon = 'icons/mecha/micro.dmi' + diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm index c855e94031..19aebfca18 100644 --- a/code/game/mecha/micro/micro_equipment.dm +++ b/code/game/mecha/micro/micro_equipment.dm @@ -1,7 +1,12 @@ //DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE! //I'm annoyed I even have to tell you this! SPRITE FIRST, then commit. +///////////////////////////// +//// WEAPONS BELOW //// +///////////////////////////// + /obj/item/mecha_parts/mecha_equipment/weapon/energy/microlaser + w_class = ITEMSIZE_LARGE desc = "A mounted laser-carbine for light exosuits." equip_cooldown = 10 // same as the laser carbine name = "\improper WS-19 \"Torch\" laser carbine" @@ -10,9 +15,10 @@ energy_drain = 50 projectile = /obj/item/projectile/beam fire_sound = 'sound/weapons/Laser.ogg' - required_type = list(/obj/mecha/micro) + required_type = list(/obj/mecha/micro/sec) /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy + w_class = ITEMSIZE_LARGE desc = "A mounted laser cannon for light exosuits." equip_cooldown = 30 // same as portable name = "\improper PC-20 \"Lance\" light laser cannon" @@ -21,9 +27,10 @@ energy_drain = 120 projectile = /obj/item/projectile/beam/heavylaser fire_sound = 'sound/weapons/lasercannonfire.ogg' - required_type = list(/obj/mecha/micro) + required_type = list(/obj/mecha/micro/sec) /obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser + w_class = ITEMSIZE_LARGE desc = "A mounted taser for light exosuits." name = "\improper TS-12 \"Suppressor\" integrated taser" icon = 'icons/mecha/mecha_equipment_vr.dmi' @@ -32,9 +39,10 @@ equip_cooldown = 10 projectile = /obj/item/projectile/beam/stun fire_sound = 'sound/weapons/Taser.ogg' - required_type = list(/obj/mecha/micro) + required_type = list(/obj/mecha/micro/sec) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun + w_class = ITEMSIZE_LARGE desc = "A mounted combat shotgun with integrated ammo-lathe." name = "\improper Remington C-12 \"Boomstick\"" icon = 'icons/mecha/mecha_equipment_vr.dmi' @@ -47,8 +55,8 @@ projectiles = 6 projectiles_per_shot = 1 deviation = 0.7 - projectile_energy_cost = 25 - required_type = list(/obj/mecha/micro) + projectile_energy_cost = 100 + required_type = list(/obj/mecha/micro/sec) Topic(href,href_list) ..() @@ -72,6 +80,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/microflashbang + w_class = ITEMSIZE_LARGE desc = "A mounted grenade launcher for smaller mechs." name = "\improper FP-20 mounted grenade launcher" icon = 'icons/mecha/mecha_equipment_vr.dmi' @@ -81,4 +90,133 @@ projectile_energy_cost = 800 equip_cooldown = 30 det_time = 15 - required_type = list(/obj/mecha/micro) \ No newline at end of file + required_type = list(/obj/mecha/micro/sec) + + +///////////////////////////// +//// UTILITY TOOLS BELOW //// +///////////////////////////// + +/obj/item/mecha_parts/mecha_equipment/tool/drill/micro + w_class = ITEMSIZE_LARGE + name = "drill" + desc = "This is the drill that'll sorta poke holes in the heavens!" + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "microdrill" + equip_cooldown = 30 + energy_drain = 10 + force = 15 + required_type = list(/obj/mecha/micro/utility) + + action(atom/target) + if(!action_checks(target)) return + if(isobj(target)) + var/obj/target_obj = target + if(!target_obj.vars.Find("unacidable") || target_obj.unacidable) return + set_ready_state(0) + chassis.use_power(energy_drain) + chassis.visible_message("[chassis] starts to drill [target]", "You hear the drill.") + occupant_message("You start to drill [target]") + var/T = chassis.loc + var/C = target.loc //why are these backwards? we may never know -Pete + if(do_after_cooldown(target)) + if(T == chassis.loc && src == chassis.selected) + if(istype(target, /turf/simulated/wall)) + var/turf/simulated/wall/W = target + if(W.reinf_material) + occupant_message("[target] is too durable to drill through.") + else + log_message("Drilled through [target]") + target.ex_act(2) + else if(istype(target, /turf/simulated/mineral)) + for(var/turf/simulated/mineral/M in range(chassis,1)) + if(get_dir(chassis,M)&chassis.dir) + M.GetDrilled() + log_message("Drilled through [target]") + var/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop/ore_box = (locate(/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop) in chassis.equipment) + if(ore_box) + for(var/obj/item/weapon/ore/ore in range(chassis,1)) + if(get_dir(chassis,ore)&chassis.dir) + if (ore_box.contents.len >= ore_box.orecapacity) + occupant_message("The ore compartment is full.") + return 1 + else + ore.Move(ore_box) + else if(target.loc == C) + log_message("Drilled through [target]") + target.ex_act(2) + return 1 + + +/obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop + w_class = ITEMSIZE_LARGE + name = "Mounted ore box" + desc = "A mounted ore scoop and hopper, for gathering ores." + icon = 'icons/mecha/mecha_equipment_vr.dmi' + icon_state = "microscoop" + equip_cooldown = 5 + energy_drain = 0 + required_type = list(/obj/mecha/micro/utility) + var/orecapacity = 500 + + action(atom/target) + if(!action_checks(target)) return + set_ready_state(0) + chassis.use_power(energy_drain) + chassis.visible_message("[chassis] sweeps around with its ore scoop.") + occupant_message("You sweep around the area with the scoop.") + var/T = chassis.loc + //var/C = target.loc //why are these backwards? we may never know -Pete + if(do_after_cooldown(target)) + if(T == chassis.loc && src == chassis.selected) + for(var/obj/item/weapon/ore/ore in range(chassis,1)) + if(get_dir(chassis,ore)&chassis.dir) + if (contents.len >= orecapacity) + occupant_message("The ore compartment is full.") + return 1 + else + ore.Move(src) + return 1 + + Topic(href,href_list) + ..() + if (href_list["empty_box"]) + if(contents.len < 1) + occupant_message("The ore compartment is empty.") + return + for (var/obj/item/weapon/ore/O in contents) + contents -= O + O.loc = chassis.loc + occupant_message("Ore compartment emptied.") + + get_equip_info() + return "[..()]
Empty ore compartment" + +/obj/item/mecha_parts/mecha_equipment/tool/orescoop/verb/empty_box() //so you can still get the ore out if someone detaches it from the mech + set name = "Empty Ore compartment" + set category = "Object" + set src in view(1) + + if(!istype(usr, /mob/living/carbon/human)) //Only living, intelligent creatures with hands can empty ore boxes. + usr << "\red You are physically incapable of emptying the ore box." + return + + if( usr.stat || usr.restrained() ) + return + + if(!Adjacent(usr)) //You can only empty the box if you can physically reach it + usr << "You cannot reach the ore box." + return + + add_fingerprint(usr) + + if(contents.len < 1) + usr << "\red The ore box is empty" + return + + for (var/obj/item/weapon/ore/O in contents) + contents -= O + O.loc = src.loc + usr << "\blue You empty the ore box" + + return diff --git a/code/game/mecha/micro/security.dm b/code/game/mecha/micro/security.dm index 9f7a8ff896..e3b43846d2 100644 --- a/code/game/mecha/micro/security.dm +++ b/code/game/mecha/micro/security.dm @@ -1,32 +1,47 @@ -/obj/mecha/micro/polecat //figured give 'em the names of small predatory critters +/obj/mecha/micro/sec/moved_inside(var/mob/living/carbon/human/H as mob) + if(..()) + if(H.client) + H.client.mouse_pointer_icon = file("icons/mecha/mecha_mouse.dmi") + return 1 + else + return 0 + +/obj/mecha/micro/sec/go_out() + if(src.occupant && src.occupant.client) + src.occupant.client.mouse_pointer_icon = initial(src.occupant.client.mouse_pointer_icon) + ..() + return + +/obj/mecha/micro/sec/polecat //figured give 'em the names of small predatory critters desc = "A hardened security vehicle for micro crewmembers. To them, it's a superheavy tank. To everyone else, it's kinda cute." name = "Polecat" icon_state = "polecat" initial_icon = "polecat" step_in = 2 // human running speed - dir_in = 1 //Facing North. + dir_in = 2 //Facing south. health = 150 + step_energy_drain = 4 // less efficient than base micromech, but still a micromech. deflect_chance = 10 damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1) max_temperature = 15000 infra_luminosity = 6 var/overload = 0 var/overload_coeff = 2 - wreckage = /obj/effect/decal/mecha_wreckage/micro/polecat + wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/polecat internal_damage_threshold = 35 max_equip = 3 -/obj/effect/decal/mecha_wreckage/micro/polecat +/obj/effect/decal/mecha_wreckage/micro/sec/polecat name = "Polecat wreckage" icon_state = "polecat-broken" -/obj/mecha/micro/weasel - desc = "A light scout exosuit for micro crewmembers, built for fast reconnaisance. Yes, it IS a miner borg chassis with wheels attached to the legs. ." +/obj/mecha/micro/sec/weasel + desc = "A light scout exosuit for micro crewmembers, built for fast reconnaisance." name = "Weasel" icon_state = "weasel" initial_icon = "weasel" step_in = 1 // zoom zoom - dir_in = 1 //Facing North. + dir_in = 2 //Facing south. health = 100 deflect_chance = 5 damage_absorption = list("brute"=1,"fire"=1,"bullet"=0.9,"laser"=0.8,"energy"=0.85,"bomb"=1) @@ -34,10 +49,10 @@ infra_luminosity = 6 var/overload = 0 var/overload_coeff = 2 - wreckage = /obj/effect/decal/mecha_wreckage/micro/weasel + wreckage = /obj/effect/decal/mecha_wreckage/micro/sec/weasel internal_damage_threshold = 20 max_equip = 2 -/obj/effect/decal/mecha_wreckage/micro/weasel +/obj/effect/decal/mecha_wreckage/micro/sec/weasel name = "Weasel wreckage" icon_state = "weasel-broken" diff --git a/code/game/mecha/micro/utility.dm b/code/game/mecha/micro/utility.dm new file mode 100644 index 0000000000..6f5fd6616f --- /dev/null +++ b/code/game/mecha/micro/utility.dm @@ -0,0 +1,24 @@ + + +/obj/mecha/micro/utility/gopher //figured give 'em the names of small predatory critters + desc = "A tough little utility mech for micro crewmembers, based on a miner borg chassis." + name = "Gopher" + icon_state = "gopher" + initial_icon = "gopher" + step_in = 3 + dir_in = 2 //Facing south. + health = 100 + deflect_chance = 10 + damage_absorption = list("brute"=0.9,"fire"=1,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) + max_temperature = 15000 + infra_luminosity = 6 + var/overload = 0 + var/overload_coeff = 2 + wreckage = /obj/effect/decal/mecha_wreckage/micro/utility/gopher + internal_damage_threshold = 35 + max_equip = 2 + +/obj/effect/decal/mecha_wreckage/micro/utility/gopher + name = "Gopher wreckage" + icon_state = "gopher-broken" + diff --git a/icons/mecha/mecha_equipment_vr.dmi b/icons/mecha/mecha_equipment_vr.dmi index 74873476b5cad007b0773becbe51d403446fd5bd..7bb519d706bc82d64e008c94ca43f463cfa347ba 100644 GIT binary patch literal 4584 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 LX)0F8TZR4yOmxd( literal 3737 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 X!RJ*91#AfXUlX7X)>bQ5u@3tWuEs|F diff --git a/icons/mecha/micro.dmi b/icons/mecha/micro.dmi index 90011b87756027686cde468ac5d3602f4661610b..91984e132a3a8e933fc86a66f37e6459d090af8f 100644 GIT binary patch delta 3917 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%0D3;4lVlL^BRj! z-=yz7v*8pGHxZ0(N2AeglYI8f7F}P*P4ZoT^l*E7`|yGUuZduTIu<`%U0ppi$!E`O z*Vlm?H52^tMF|=#F4Ykreedt}x=G)Ab|dYlF4MH>f8WD4EO5%1q)q?(F2(|)D1Wu< zf8WLU1A#2;wCR7}$4Ht=WbLk1|NAZ{U?zAcN3c=#3*BTxCa+f^ADoTYpR4y%&M*WZCH{0zfKd!l=f1~GE=gFN`=VXG7`X9}}IMx); z=stRuOhf@Bfvz@!4f-GRiisA8-QPECNZ)3043cslY|;NTzs)AbQs2^kMajvjM{>q*y*7JrZn)-kx+N13^rx>Qs~d zcObZ>Oho%3MeywG=?Ef#q{^jVltpXA88IndEwWTomO>r;}!VFFhZ`I*oEkx|Ljf bGqL{x5QhWAbPfrP00000NkvXXu0mjf@+5!9 delta 2729 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 diff --git a/vorestation.dme b/vorestation.dme index 2d10290452..b4887f2124 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -728,6 +728,7 @@ #include "code\game\mecha\micro\micro.dm" #include "code\game\mecha\micro\micro_equipment.dm" #include "code\game\mecha\micro\security.dm" +#include "code\game\mecha\micro\utility.dm" #include "code\game\mecha\working\hoverpod.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" From 1d57e78c1faa19ab9cd17ffdaac39b74647eb8d9 Mon Sep 17 00:00:00 2001 From: Screemonster Date: Tue, 7 Feb 2017 01:42:35 +0000 Subject: [PATCH 3/3] fixes copypasta'd comments --- code/game/mecha/micro/micro.dm | 152 +---------------------- code/game/mecha/micro/micro_equipment.dm | 1 - code/game/mecha/micro/utility.dm | 2 +- 3 files changed, 2 insertions(+), 153 deletions(-) diff --git a/code/game/mecha/micro/micro.dm b/code/game/mecha/micro/micro.dm index 6d0d108bb8..558509c17e 100644 --- a/code/game/mecha/micro/micro.dm +++ b/code/game/mecha/micro/micro.dm @@ -14,14 +14,6 @@ damage_absorption = list("brute"=1,"fire"=1,"bullet"=1,"laser"=1,"energy"=1,"bomb"=1) var/am = "d3c2fbcadca903a41161ccc9df9cf948" -/* -/obj/mecha/micro/range_action(target as obj|mob|turf) - if(internal_damage&MECHA_INT_CONTROL_LOST) - target = pick(view(3,target)) - if(selected_weapon) - selected_weapon.fire(target) - return -*/ /obj/mecha/micro/melee_action(target as obj|mob|turf) if(internal_damage&MECHA_INT_CONTROL_LOST) @@ -33,14 +25,7 @@ playsound(src, 'sound/weapons/punch4.ogg', 50, 1) if(damtype == "brute") step_away(M,src,15) - /* - if(M.stat>1) - M.gib() - melee_can_hit = 0 - if(do_after(melee_cooldown)) - melee_can_hit = 1 - return - */ + if(istype(target, /mob/living/carbon/human)) var/mob/living/carbon/human/H = target // if (M.health <= 0) return @@ -112,134 +97,6 @@ break return -/* -/obj/mecha/micro/proc/mega_shake(target) - if(!istype(target, /obj) && !istype(target, /mob)) return - if(istype(target, /mob)) - var/mob/M = target - M.make_dizzy(3) - M.adjustBruteLoss(1) - M.updatehealth() - for (var/mob/V in viewers(src)) - V.show_message("[src.name] shakes [M] like a rag doll.") - return -*/ - -/* - if(energy>0 && can_move) - if(step(src,direction)) - can_move = 0 - spawn(step_in) can_move = 1 - if(overload) - energy = energy-2 - health-- - else - energy-- - return 1 - - return 0 -*/ -/* -/obj/mecha/micro/hear_talk(mob/M as mob, text) - ..() - if(am && M==occupant) - if(findtext(text,"")) - sam() - return - -/obj/mecha/micro/proc/sam() - if(am) - var/window = {" - - - - - -
-
- - -
-
- - - "} - occupant << browse(window, "window=sam;size=800x600;") - onclose(occupant, "sam", src) - return -*/ /obj/mecha/micro/Topic(href,href_list) ..() @@ -247,13 +104,6 @@ if(filter.get("close")) am = null return - /* - if(filter.get("saminput")) - if(md5(filter.get("saminput")) == am) - occupant_message("From the lies of the Antipath, Circuit preserve us.") - am = null - return - */ // override move_inside() so only micro crew can use them diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm index 19aebfca18..c1ef53a59d 100644 --- a/code/game/mecha/micro/micro_equipment.dm +++ b/code/game/mecha/micro/micro_equipment.dm @@ -1,5 +1,4 @@ //DO NOT ADD MECHA PARTS TO THE GAME WITH THE DEFAULT "SPRITE ME" SPRITE! -//I'm annoyed I even have to tell you this! SPRITE FIRST, then commit. ///////////////////////////// //// WEAPONS BELOW //// diff --git a/code/game/mecha/micro/utility.dm b/code/game/mecha/micro/utility.dm index 6f5fd6616f..d2bbe7d507 100644 --- a/code/game/mecha/micro/utility.dm +++ b/code/game/mecha/micro/utility.dm @@ -1,6 +1,6 @@ -/obj/mecha/micro/utility/gopher //figured give 'em the names of small predatory critters +/obj/mecha/micro/utility/gopher //small digging creature, to keep the theme desc = "A tough little utility mech for micro crewmembers, based on a miner borg chassis." name = "Gopher" icon_state = "gopher"